fixing login register

This commit is contained in:
FahrezaDaffa93 2024-04-05 02:27:29 +07:00
parent 0ce4f4bd7c
commit ee59e5a722
18 changed files with 730 additions and 266 deletions

View File

@ -4,6 +4,9 @@
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
@ -25,7 +28,7 @@ class LoginController extends Controller
*
* @var string
*/
protected $redirectTo = '/home';
protected $redirectTo = '/';
/**
* Create a new controller instance.
@ -36,4 +39,12 @@ public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/');
}
}

View File

@ -28,7 +28,7 @@ class RegisterController extends Controller
*
* @var string
*/
protected $redirectTo = '/home';
protected $redirectTo = '/';
/**
* Create a new controller instance.
@ -49,8 +49,9 @@ public function __construct()
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'nama' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'alamat' => ['required', 'string', 'max:255'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
@ -64,8 +65,9 @@ protected function validator(array $data)
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'nama' => $data['nama'],
'email' => $data['email'],
'alamat' => $data['alamat'],
'password' => Hash::make($data['password']),
]);
}

View File

@ -59,7 +59,7 @@ public function hitungKonsultasi(Request $request)
$validateReq = $request->validate([
'nama' => 'required',
'alamat' => 'required',
'jenis_sapi' => 'required'
// 'jenis_sapi' => 'required'
]);
$arrHasilUser = $request->input('resultGejala');
@ -105,7 +105,7 @@ public function hitungKonsultasi(Request $request)
$hasil = new Hasil();
$hasil->nama = $validateReq['nama'];
$hasil->alamat = $validateReq['alamat'];
$hasil->jenis_sapi = $validateReq['jenis_sapi'];
// $hasil->jenis_sapi = $validateReq['jenis_sapi'];
$hasil->hasil_diagnosa = json_encode($variabelTampilan);
$hasil->solusi = $variabelTampilan['Solusi_Penyakit']['solusi'];
$hasil->save();

View File

@ -18,9 +18,10 @@ class User extends Authenticatable
* @var array<int, string>
*/
protected $fillable = [
'name',
'nama',
'email',
'password',
'alamat',
];
/**

View File

@ -17,6 +17,7 @@ public function up(): void
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('alamat');
$table->rememberToken();
$table->timestamps();
});

215
package-lock.json generated
View File

@ -5,8 +5,11 @@
"packages": {
"": {
"devDependencies": {
"@popperjs/core": "^2.11.6",
"axios": "^1.1.2",
"bootstrap": "^5.2.3",
"laravel-vite-plugin": "^0.8.0",
"sass": "^1.56.1",
"vite": "^4.0.0"
}
},
@ -362,6 +365,29 @@
"node": ">=12"
}
},
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"dev": true,
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@ -379,6 +405,73 @@
"proxy-from-env": "^1.1.0"
}
},
"node_modules/binary-extensions": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
"integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"dev": true,
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/bootstrap": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
"integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/twbs"
},
{
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
}
],
"peerDependencies": {
"@popperjs/core": "^2.11.8"
}
},
"node_modules/braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"dev": true,
"dependencies": {
"fill-range": "^7.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"dev": true,
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
"glob-parent": "~5.1.2",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
"readdirp": "~3.6.0"
},
"engines": {
"node": ">= 8.10.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@ -437,6 +530,18 @@
"@esbuild/win32-x64": "0.18.20"
}
},
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/follow-redirects": {
"version": "1.15.5",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
@ -485,6 +590,66 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"dependencies": {
"is-glob": "^4.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/immutable": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",
"integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==",
"dev": true
},
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
"dependencies": {
"binary-extensions": "^2.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"dependencies": {
"is-extglob": "^2.1.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/laravel-vite-plugin": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.8.1.tgz",
@ -540,6 +705,15 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@ -592,6 +766,18 @@
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"dev": true
},
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
"dependencies": {
"picomatch": "^2.2.1"
},
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/rollup": {
"version": "3.29.4",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
@ -608,6 +794,23 @@
"fsevents": "~2.3.2"
}
},
"node_modules/sass": {
"version": "1.72.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.72.0.tgz",
"integrity": "sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==",
"dev": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
"source-map-js": ">=0.6.2 <2.0.0"
},
"bin": {
"sass": "sass.js"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/source-map-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
@ -617,6 +820,18 @@
"node": ">=0.10.0"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/vite": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz",

22
public/css/auth.css Normal file
View File

@ -0,0 +1,22 @@
.gradient-custom-2 {
/* fallback for old browsers */
background: #fccb90;
/* Chrome 10-25, Safari 5.1-6 */
background: -webkit-linear-gradient(to right, #3b83d0, #3b83d0, #3b83d0, #1c5299);
/* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
background: linear-gradient(to right, #3b83d0, #3b83d0, #3b83d0, #1c5299);
}
@media (min-width: 400px) {
.gradient-form {
height: 100vh !important;
}
}
@media (min-width: 769px) {
.gradient-custom-2 {
border-top-right-radius: .3rem;
border-bottom-right-radius: .3rem;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

22
resources/css/login.css Normal file
View File

@ -0,0 +1,22 @@
.gradient-custom-2 {
/* fallback for old browsers */
background: #fccb90;
/* Chrome 10-25, Safari 5.1-6 */
background: -webkit-linear-gradient(to right, #ee7724, #d8363a, #dd3675, #b44593);
/* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
background: linear-gradient(to right, #ee7724, #d8363a, #dd3675, #b44593);
}
@media (min-width: 768px) {
.gradient-form {
height: 100vh !important;
}
}
@media (min-width: 769px) {
.gradient-custom-2 {
border-top-right-radius: .3rem;
border-bottom-right-radius: .3rem;
}
}

View File

@ -1,73 +1,112 @@
@extends('layouts.app')
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Sistem Pakar</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link rel="stylesheet" href="{{ asset('css/login.css') }}">
<link rel="stylesheet" href="{{ asset('css/auth.css') }}">
<style>
/* tambahkan gaya kustom di sini */
body {
background-color: #2b2525;
}
.card {
border: none;
border-radius: 8px;
box-shadow: 0 1px 6px rgba(0, 0, 0, 0.1), 0 1px 4px rgba(0, 0, 0, 0.06);
background-color: #cfcfcf ;
margin-top: 20px;
}
.card-body {
padding: 2rem;
}
.form-control {
border: 1px solid #e1e4e8;
border-radius: 6px;
padding: 12px;
font-size: 16px;
margin-bottom: 1rem;
}
.form-label {
margin-bottom: 0.5rem;
font-weight: 600;
}
.btn-primary {
background-color: #2ea44f;
border-color: #2ea44f;
padding: 10px 16px;
font-size: 16px;
border-radius: 6px;
font-weight: 600;
transition: background-color 0.2s;
}
.btn-primary:hover {
background-color: #2c974b;
border-color: #2c974b;
}
.forgot-password {
color: #586069;
font-size: 14px;
margin-bottom: 1rem;
}
.create-account {
color: #0366d6;
font-size: 14px;
margin-top: 1rem;
font-weight: 600;
}
.create-account:hover {
text-decoration: underline;
}
.brand-logo {
max-width: 100px;
margin-bottom: 1rem;
}
.github-logo {
max-width: 200px;
margin-bottom: 1rem;
}
</style>
</head>
<body>
<section class="h-100">
<div class="container">
<div class="row justify-content-center align-items-center">
<div class="col-lg-5">
<div class="card">
<div class="card-body">
<img src="img/logo3.1.png" class="brand-logo d-block mx-auto" alt="logo">
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Login') }}</div>
<div class="card-body">
<form method="POST" action="{{ route('login') }}">
@csrf
<div class="row mb-3">
<label for="email" class="col-md-4 col-form-label text-md-end">{{ __('Email Address') }}</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="row mb-3">
<label for="password" class="col-md-4 col-form-label text-md-end">{{ __('Password') }}</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="row mb-3">
<div class="col-md-6 offset-md-4">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
<label class="form-check-label" for="remember">
{{ __('Remember Me') }}
</label>
<h2 class="text-center mb-4">Login</h2>
<form method="POST" action="{{ route('login') }}">
@csrf
<div class="mb-3">
<label for="email" class="form-label">Email address</label>
<input type="email" class="form-control" id="email" name="email" value="{{ old('email') }}" required autofocus>
</div>
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" class="form-control" id="password" name="password" required>
</div>
<div class="mb-3">
<button type="submit" class="btn btn-primary btn-block">Login</button>
</div>
</form>
<p class="forgot-password text-center">
<a href="#">Lupa Password?</a>
</p>
<p class="text-center">
Belum Punya Akun ? <a href="{{ route('register') }}" class="create-account">Buat Akun</a>
</p>
</div>
<div class="row mb-0">
<div class="col-md-8 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Login') }}
</button>
@if (Route::has('password.request'))
<a class="btn btn-link" href="{{ route('password.request') }}">
{{ __('Forgot Your Password?') }}
</a>
@endif
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
</section>
</body>
</html>

View File

@ -0,0 +1,62 @@
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-6">
<div class="card shadow-lg">
<div class="card-header bg-primary text-white text-center">
<h3>{{ __('Login') }}</h3>
</div>
<div class="card-body">
<form method="POST" action="{{ route('login') }}">
@csrf
<div class="mb-4">
<label for="email" class="form-label">{{ __('Email Address') }}</label>
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="mb-4">
<label for="password" class="form-label">{{ __('Password') }}</label>
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="mb-4 form-check">
<input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
<label class="form-check-label" for="remember">
{{ __('Remember Me') }}
</label>
</div>
<div class="d-grid gap-2">
<button type="submit" class="btn btn-primary">
{{ __('Login') }}
</button>
</div>
<div class="text-center mt-3">
@if (Route::has('password.request'))
<a class="btn btn-link" href="{{ route('password.request') }}">
{{ __('Forgot Your Password?') }}
</a>
@endif
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -1,77 +1,94 @@
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Register') }}</div>
<div class="card-body">
<form method="POST" action="{{ route('register') }}">
@csrf
<div class="row mb-3">
<label for="name" class="col-md-4 col-form-label text-md-end">{{ __('Name') }}</label>
<div class="col-md-6">
<input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}" required autocomplete="name" autofocus>
@error('name')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Sistem Pakar</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<style>
/* tambahkan gaya kustom di sini */
.gradient-form {
background-color: #2b2525;
}
.card {
background-color: #cfcfcf;
}
.card-body {
padding: 2rem; /* Ubah padding menjadi 2rem */
}
.form-outline input[type=email],
.form-outline input[type=password],
.form-outline input[type=text] {
border-radius: 15px; /* Ubah radius border menjadi 15px */
padding: 0.8rem; /* Ubah padding menjadi 0.8rem */
}
.btn-primary {
border-radius: 15px; /* Ubah radius border tombol menjadi 15px */
padding: 0.75rem 1.5rem;
}
.gradient-custom-2 {
background: linear-gradient(to right, #667db6, #0082c8, #0082c8, #667db6);
}
.background-image {
background-image: url('img/background-sapi-login.png');
background-size: cover;
background-position: center;
}
.overlay {
background-color: rgba(0, 0, 0, 0.6);
height: 100%;
width: 100%;
position: absolute;
top: 0;
left: 0;
}
</style>
</head>
<body>
<section class="h-100 gradient-form">
<div class="container py-5">
<div class="row justify-content-center align-items-center">
<div class="col-md-8 col-lg-6"> <!-- Ubah ukuran kolom di sini -->
<div class="card rounded-3 text-black">
<div class="card-body">
<div class="text-center mb-4"> <!-- Ubah margin menjadi mb-4 -->
<img src="img/logo3.1.png" style="width: 185px;" alt="logo">
<h4 class="mt-1 mb-3">Register</h4> <!-- Ubah margin menjadi mb-3 -->
</div>
<form method="POST" action="{{ route('register') }}">
@csrf
<div class="form-outline mb-3"> <!-- Ubah margin menjadi mb-3 -->
<label class="form-label" for="nama">Nama</label>
<input id="nama" type="text" class="form-control @error('nama') is-invalid @enderror" name="nama" value="{{ old('nama') }}" required autocomplete="nama" autofocus>
</div>
<div class="form-outline mb-3"> <!-- Ubah margin menjadi mb-3 -->
<label class="form-label" for="email">Email</label>
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email">
</div>
<div class="form-outline mb-3"> <!-- Ubah margin menjadi mb-3 -->
<label class="form-label" for="password">Password</label>
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password">
</div>
<div class="form-outline mb-3"> <!-- Ubah margin menjadi mb-3 -->
<label class="form-label" for="password-confirm">Konfirmasi Password</label>
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
</div>
<div class="form-outline mb-3"> <!-- Ubah margin menjadi mb-3 -->
<label class="form-label" for="alamat">Alamat</label>
<input id="alamat" type="text" class="form-control @error('alamat') is-invalid @enderror" name="alamat" value="{{ old('alamat') }}" required autocomplete="alamat">
</div>
<div class="text-center mb-3"> <!-- Ubah margin menjadi mb-3 -->
<button type="submit" class="btn btn-primary btn-block">Daftar</button>
</div>
</form>
</div>
<div class="row mb-3">
<label for="email" class="col-md-4 col-form-label text-md-end">{{ __('Email Address') }}</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email">
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="row mb-3">
<label for="password" class="col-md-4 col-form-label text-md-end">{{ __('Password') }}</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="row mb-3">
<label for="password-confirm" class="col-md-4 col-form-label text-md-end">{{ __('Confirm Password') }}</label>
<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
</div>
</div>
<div class="row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Register') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
</section>
</body>
</html>

View File

@ -0,0 +1,90 @@
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Register') }}</div>
<div class="card-body">
<form method="POST" action="{{ route('register') }}">
@csrf
<div class="row mb-3">
<label for="nama" class="col-md-4 col-form-label text-md-end">{{ __('Nama') }}</label>
<div class="col-md-6">
<input id="nama" type="text" class="form-control @error('nama') is-invalid @enderror" name="nama" value="{{ old('nama') }}" required autocomplete="nama" autofocus>
@error('nama')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="row mb-3">
<label for="email" class="col-md-4 col-form-label text-md-end">{{ __('Email Address') }}</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email">
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="row mb-3">
<label for="password" class="col-md-4 col-form-label text-md-end">{{ __('Password') }}</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="row mb-3">
<label for="password-confirm" class="col-md-4 col-form-label text-md-end">{{ __('Confirm Password') }}</label>
<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
</div>
</div>
<div class="row mb-3">
<label for="alamat" class="col-md-4 col-form-label text-md-end">{{ __('Alamat') }}</label>
<div class="col-md-6">
<input id="alamat" type="text" class="form-control @error('alamat') is-invalid @enderror" name="alamat" value="{{ old('alamat') }}" required autocomplete="alamat" autofocus>
@error('alamat')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Register') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -1,27 +1,26 @@
@auth
@extends('layouts.master')
@section('title', 'konsultasi')
@section('konten')
<div class="container-fluid p-0 m-0 my-5">
<div class="col-xxl-5">
<div class="container-fluid py-5" style="background-color: #f8f9fa;">
<div class="col-xxl-5 mx-auto">
<!-- Header text content-->
<div class="text-center text-xxl-start">
<div class="badge bg-gradient-primary-to-secondary text-black mb-4" @style("font-size:20pt")><div class="text-uppercase"> PILIH GEJALA</div></div>
<div class="text-center text-xxl-start mb-4">
<div class="badge bg-primary text-white" style="font-size: 24px;"><div class="text-uppercase"> PILIH GEJALA</div></div>
</div>
</div>
<div class="card kartu-custom">
<div class="card-header bg-gradient-primary-to-secondary text-white fw-bold">
<div class="card-header bg-primary text-white fw-bold">
Konsultasi Gejala
</div>
<div class="card-body">
<form action="{{ URL::to('diagnosa') }}" method="post">
@csrf
<div class="mb-3 row">
<div class="mb-3 row" @style("display:none;")>
<label for="nama" class="col-sm-2 col-form-label text-custom">Nama Pengunjung</label>
<div class="col-sm-10">
<input type="text" class="form-control @error('nama') is-invalid @enderror" id="nama" name="nama"
value="{{ old('nama') }}">
<input type="text" class="form-control" id="nama" name="nama" value="{{ Auth::user()->nama }}">
@error('nama')
<div class="invalid-feedback">
{{ $message }}
@ -29,11 +28,10 @@
@enderror
</div>
</div>
<div class="mb-3 row">
<div class="mb-3 row" @style("display:none;")>
<label for="alamat" class="col-sm-2 col-form-label text-custom">Alamat</label>
<div class="col-sm-10">
<textarea class="form-control @error('alamat') is-invalid @enderror" id="alamat" name="alamat"
rows="3">{{ old('alamat') }}</textarea>
<textarea class="form-control" id="alamat" name="alamat" rows="3">{{ Auth::user()->alamat }}</textarea>
@error('alamat')
<div class="invalid-feedback">
{{ $message }}
@ -41,45 +39,24 @@
@enderror
</div>
</div>
<div class="mb-3 row">
{{-- <div class="mb-3 row">
<label for="jenis_sapi" class="col-sm-2 col-form-label text-custom">Jenis Sapi</label>
<div class="col-sm-10">
<input type="text" class="form-control @error('jenis_sapi') is-invalid @enderror"
id="jenis_sapi" name="jenis_sapi" value="{{ old('jenis_sapi') }}">
<input type="text" class="form-control" id="jenis_sapi" name="jenis_sapi" value="{{ old('jenis_sapi') }}">
@error('jenis_sapi')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
</div> --}}
@if (session()->has('error'))
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="check-circle-fill" fill="currentColor" viewBox="0 0 16 16">
<path
d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z" />
</symbol>
<symbol id="info-fill" fill="currentColor" viewBox="0 0 16 16">
<path
d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z" />
</symbol>
<symbol id="exclamation-triangle-fill" fill="currentColor" viewBox="0 0 16 16">
<path
d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z" />
</symbol>
</svg>
<div class="alert alert-danger alert-dismissible fade show d-flex align-items-center" role="alert">
<svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Danger:">
<use xlink:href="#exclamation-triangle-fill" />
</svg>
<div>
{{ session('error') }}
</div>
<button type="button" class="btn-close" data-bs-dismiss="alert"
aria-label="Close"></button>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
{{ session('error') }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endif
<table class="table table-bordered custom-table" style="width: 100%">
<table class="table table-bordered custom-table">
<colgroup>
<col span="1" style="width: 3%;">
<col span="1" style="width: 12%;">
@ -104,12 +81,10 @@
<td class="text-center">{{ $gejala['kode_gejala'] }}</td>
<td>{{ $gejala['gejala'] }}</td>
<td class="text-center">
<input type="checkbox" class="form-check-input" name="resultGejala[]"
value="{{ $gejala['kode_gejala'] }}"
<input type="checkbox" class="form-check-input" name="resultGejala[]" value="{{ $gejala['kode_gejala'] }}"
@if (is_array(old('resultGejala')) && in_array($gejala['kode_gejala'], old('resultGejala'))) checked @endif>
</td>
</tr>
@php
$i++;
@endphp
@ -117,17 +92,22 @@
</tbody>
</table>
<div class="d-grid gap-2 d-md-flex justify-content-md-end">
<button class="btn btn-sm btn-info text-whitefw-bold" type="submit"><i class="fa-solid fa-floppy-disk me-1"></i>
Hitung
</button>
<button class="btn btn-sm btn-danger fw-bold" type="reset"><i class="fa-solid fa-ban me-1"></i>
Cancel
</button>
<button class="btn btn-info fw-bold" type="submit"><i class="fa-solid fa-floppy-disk me-1"></i> Hitung</button>
<button class="btn btn-danger fw-bold" type="reset"><i class="fa-solid fa-ban me-1"></i> Cancel</button>
</div>
</form>
</div>
<div class="card-footer"></div>
</div>
</div>
@guest <!-- Menampilkan pesan jika pengguna belum login -->
<div class="container">
<div class="alert alert-warning" role="alert">
Anda harus login untuk mengakses halaman ini.
</div>
</div>
@endguest
@endauth
@endsection

View File

@ -2,72 +2,49 @@
@section('konten')
<div class="card shadow-sm mb-3" style="background-color: #4b86fe;">
<div class="card-header bg-gradient-primary-to-secondary text-white fw-bold">
Hasil Diagnosa
<div class="card shadow-sm mb-3" style="background-color: #fff; border: 1px solid #ccc; font-size: 0.9rem;">
<div class="card-header bg-gradient-primary-to-secondary text-white fw-bold" style="background-color: #f2f2f2; border-bottom: 1px solid #ccc; padding: 8px;">
<h5 class="m-0">Nota Diagnosa</h5>
</div>
<div class="card-body" style="padding: 8px;">
<h6 class="text-custom"><b>1. Pengunjung</b></h6>
<div class="row row-cols-md-2">
<div class="col mb-2">
<strong>Nama:</strong> {{ $dataDiagnosa['nama'] }}
</div>
<div class="card-body">
<div class="container-fluid">
<h5 class="text-custom"><b>1. Pengunjung</b></h5>
<div class="row row-cols-md-3 row-cols-sm-2 row-cols-1">
<div class="col mb-3">
<div class="card">
<div class="card-body">
<h6 class="card-title"><strong>Nama:</strong></h6>
<p class="card-text">{{ $dataDiagnosa['nama'] }}</p>
</div>
</div>
</div>
<div class="col mb-3">
<div class="card">
<div class="card-body">
<h6 class="card-title"><strong>Jenis Sapi:</strong></h6>
<p class="card-text">{{ $dataDiagnosa['jenis_sapi'] }}</p>
</div>
</div>
</div>
<div class="col mb-3">
<div class="card">
<div class="card-body">
<h6 class="card-title"><strong>Alamat:</strong></h6>
<p class="card-text">{{ $dataDiagnosa['alamat'] }}</p>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid mt-4">
<h5 class="text-custom"><b>2. Gejala yang dialami</b></h5>
<div class="list-group">
@foreach ($hasilDiagnosa->Gejala_Penyakit as $gejala)
<a href="#" class="list-group-item list-group-item-action">{{ $gejala->nama_gejala }}</a>
@endforeach
</div>
</div>
<div class="container-fluid mt-4">
<h5 class="text-custom"><b>3. Penyakit</b></h5>
<div class="card">
<ul class="list-group list-group-flush">
<li class="list-group-item"><strong>Nama Penyakit:</strong> {{ $hasilDiagnosa->Nama_Penyakit->nama_penyakit }}</li>
<li class="list-group-item"><strong>Nilai Kepercayaan:</strong> {!! '<b>' . $hasilDiagnosa->Persentase_Penyakit . '</b>' . ' / (' . $hasilDiagnosa->Nilai_Belief_Penyakit . ')' !!}</li>
</ul>
</div>
</div>
<div class="container-fluid mt-4">
<h5 class="text-custom"><b>4. Solusi</b></h5>
<div class="list-group">
@foreach (json_decode($hasilDiagnosa->Solusi_Penyakit->solusi) as $solusi)
<a href="#" class="list-group-item list-group-item-action">{{ $solusi }}</a>
@endforeach
</div>
</div>
<div class="col mb-2">
<strong>Alamat:</strong> {{ $dataDiagnosa['alamat'] }}
</div>
<div class="card-footer"></div>
</div>
<a href="{{ URL::to('diagnosa') }}" class="btn btn-sm btn-info text-white"><i class="fa-solid fa-arrow-left me-1"></i> Diagnosa Ulang</a>
<hr style="margin: 8px 0;">
<h6 class="text-custom"><b>2. Gejala yang Dialami</b></h6>
<div class="list-group">
@foreach ($hasilDiagnosa->Gejala_Penyakit as $gejala)
<a href="#" class="list-group-item list-group-item-action" style="padding: 4px 8px;">{{ $gejala->nama_gejala }}</a>
@endforeach
</div>
<hr style="margin: 8px 0;">
<h6 class="text-custom"><b>3. Penyakit</b></h6>
<ul class="list-group" style="margin-bottom: 8px;">
<li class="list-group-item" style="padding: 4px 8px;"><strong>Nama Penyakit:</strong> {{ $hasilDiagnosa->Nama_Penyakit->nama_penyakit }}</li>
<li class="list-group-item" style="padding: 4px 8px;"><strong>Nilai Kepercayaan:</strong> {!! '<b>' . $hasilDiagnosa->Persentase_Penyakit . '</b>' . ' / (' . $hasilDiagnosa->Nilai_Belief_Penyakit . ')' !!}</li>
</ul>
<hr style="margin: 8px 0;">
<h6 class="text-custom"><b>4. Solusi</b></h6>
<div class="list-group">
@foreach (json_decode($hasilDiagnosa->Solusi_Penyakit->solusi) as $solusi)
<a href="#" class="list-group-item list-group-item-action" style="padding: 4px 8px;">{{ $solusi }}</a>
@endforeach
</div>
</div>
<div class="card-footer"></div>
</div>
<a href="{{ URL::to('diagnosa') }}" class="btn btn-sm btn-info text-white"><i class="fa-solid fa-arrow-left me-1"></i> Diagnosa Ulang</a>
@endsection

View File

@ -12,6 +12,9 @@
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.bunny.net">
<link href="https://fonts.bunny.net/css?family=Nunito" rel="stylesheet">
<link rel="stylesheet" href="{{ asset('css/login.css') }}">
<link rel="stylesheet" href="{{ asset('css/auth.css') }}">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<!-- Scripts -->
@vite(['resources/sass/app.scss', 'resources/js/app.js'])

View File

@ -92,15 +92,27 @@
<a class="nav-link @if(request()->is('gejala')) active @endif" href="/gejala">Gejala</a>
</li>
<li class="nav-item mx-2">
{{-- <li class="nav-item mx-2">
<a class="nav-link @if(request()->is('aturan')) active @endif" href="/aturan">Aturan</a>
</li>
</li> --}}
</ul>
<div class="ml-2">
<a href="#" id="loginNav" class="btn btn-outline-success mr-3 mx-2">Login</a>
<a href="#" class="btn btn-danger mx-2">Daftar</a>
</div>
@if (Auth::check())
<div class="dropdown show">
<a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Selamat Datang, {{Auth::user()->nama}}
</a>
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
<a class="dropdown-item" href="logoutt">Logout</a>
<a class="dropdown-item" href="profile">Profile</a>
</div>
</div>
@else
<a href="/login" id="loginNav" class="btn btn-outline-success mr-3 mx-2">Login</a>
<a href="/register" class="btn btn-danger mx-2">Daftar</a>
@endif
</div>
</div>
</nav>
@ -111,6 +123,9 @@
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.12.9/dist/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<script src="{{asset('js/boostrap.min.js')}}"></script>
</body>

View File

@ -5,6 +5,7 @@
use App\Http\Controllers\PenyakitController;
use App\Http\Controllers\AturanController;
use App\Http\Controllers\KonsultasiController;
use App\Http\Controllers\Auth\LoginController;
/*
|--------------------------------------------------------------------------
@ -35,6 +36,11 @@
return view('konsultasi');
});
Auth::routes();
Route::middleware(['auth'])->group(function () {
//Aturan
Route::get('/aturan', [AturanController::class, 'index']);
Route::post('/tambah-aturan', [Atu21ranController::class, 'store'])->name('tambah-aturan');
@ -43,8 +49,9 @@
Route::get('diagnosa', [KonsultasiController::class, 'index']);
Route::post('diagnosa', [KonsultasiController::class, 'hitungKonsultasi']);
Route::get('diagnosa/{data_diagnosa}', [KonsultasiController::class, 'showdata']);
Route::get('logoutt', [LoginController::class, 'logout']);
Auth::routes();
});
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');