This commit is contained in:
ericko-cyber 2025-06-09 18:18:54 +07:00
parent d62fddc907
commit 23dbc40097
13 changed files with 171 additions and 75 deletions

View File

@ -5,6 +5,7 @@
use Illuminate\Console\Command;
use App\Models\RiwayatDiagnosa;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
class DeleteOldRiwayat extends Command
{
@ -13,6 +14,7 @@ class DeleteOldRiwayat extends Command
public function handle()
{
Log::info('Command riwayat:delete-old dijalankan cron job pada '.now());
$cutoffDate = Carbon::now()->subDays(7);
$deleted = RiwayatDiagnosa::where('tanggal', '<', $cutoffDate)->delete();

View File

@ -9,7 +9,7 @@ class Kernel extends ConsoleKernel
{
protected function schedule(Schedule $schedule)
{
$schedule->command('riwayat:delete-old')->daily();
$schedule->command('riwayat:delete-old')->everyMinute();
}
protected function commands()

View File

@ -11,6 +11,9 @@ class LoginController extends Controller
// Show login form
public function showLoginForm()
{
if (Auth::check()) {
return redirect('/home'); // Ganti dengan redirect ke /dashboard jika diperlukan
}
return view('layouts.login');
}
@ -22,30 +25,30 @@ public function login(Request $request)
'username' => 'required|string|max:50',
'password' => 'required|string',
]);
// Coba login
if (Auth::attempt($credentials)) {
$request->session()->regenerate();
$user = Auth::user(); // dapatkan user yang sedang login
// Cek role dan redirect sesuai role
if ($user->role === 'admin') {
return redirect()->intended('/dashboard');
} elseif ($user->role === 'user') {
return redirect()->intended('/home');
}
// Fallback redirect kalau role tidak dikenali
return redirect('/login')->withErrors(['username' => 'Role tidak dikenali.']);
}
// Gagal login
return back()->withErrors([
'username' => 'Invalid credentials.',
])->withInput();
}
// Handle logout
public function logout(Request $request)
@ -59,5 +62,3 @@ public function logout(Request $request)
return redirect('login');
}
}
?>

View File

@ -9,6 +9,7 @@
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Auth;
@ -17,18 +18,27 @@ class LupaPasswordController extends Controller
// Menampilkan form input email untuk lupa password
public function showInputEmail()
{
if (Auth::check()) {
return redirect('/home'); // Ganti dengan redirect ke /dashboard jika diperlukan
}
return view('layouts.inputemail');
}
// Menampilkan form OTP
public function showOtpForm()
{
if (Auth::check()) {
return redirect('/home'); // Ganti dengan redirect ke /dashboard jika diperlukan
}
return view('layouts.otp');
}
// Menampilkan form reset password
public function showResetPass()
{
if (Auth::check()) {
return redirect('/home'); // Ganti dengan redirect ke /dashboard jika diperlukan
}
return view('layouts.resetpass');
}

View File

@ -13,6 +13,9 @@ class RegisterController extends Controller
// Show registration form
public function showRegistrationForm()
{
if (Auth::check()) {
return redirect('/home'); // Ganti dengan redirect ke /dashboard jika diperlukan
}
return view('layouts.register');
}
@ -45,5 +48,3 @@ public function register(Request $request)
return redirect('login');
}
}
?>

View File

@ -27,5 +27,7 @@ class Kernel extends HttpKernel
protected $routeMiddleware = [
'admin' => \App\Http\Middleware\AdminMiddleware::class,
'user' => \App\Http\Middleware\UserMiddleware::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
];
}

View File

@ -0,0 +1,21 @@
<?
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
public function handle(Request $request, Closure $next)
{
// Jika pengguna sudah login
if (Auth::check()) {
// Jika sudah login, arahkan ke halaman yang sesuai (misalnya dashboard atau home)
return redirect('/home'); // Atau redirect ke halaman yang sesuai
}
// Jika belum login, lanjutkan ke rute yang diminta
return $next($request);
}
}

View File

@ -0,0 +1,19 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class UserMiddleware
{
public function handle(Request $request, Closure $next)
{
if (Auth::check() && Auth::user()->role === 'user') {
return $next($request);
}
return redirect('/dashboard'); // Atau rute lain yang sesuai
}
}

View File

@ -364,7 +364,7 @@ .header-area .main-nav .nav li {
.header-area .main-nav .nav li:last-child {
padding-right: 0px;
padding-left: 40px;
padding-left: 0px;
}
.header-area .main-nav .nav li:last-child a ,

View File

@ -357,7 +357,7 @@ .header-area .main-nav .nav li {
.header-area .main-nav .nav li:last-child {
padding-right: 0px;
padding-left: 40px;
padding-left: 0px;
}
.header-area .main-nav .nav li:last-child a ,

View File

@ -236,6 +236,18 @@
}
</style>
</head>
<script>
// Fungsi untuk memuat ulang halaman /home saat admin klik tombol Diagnosa
function reloadHomePage() {
// Cek apakah halaman saat ini adalah /home
if (window.location.pathname === '/home') {
location.reload(); // Memuat ulang halaman /home
} else {
// Jika tidak berada di /home, arahkan ke /home
window.location.href = '/home';
}
}
</script>
<body>
<header class="header-area header-sticky wow slideInDown" data-wow-duration="0.75s" data-wow-delay="0s">
@ -254,10 +266,26 @@
<li class="scroll-to-section"><a href="#about">Basic Pengetahuan</a></li>
<li class="scroll-to-section"><a href="#PP">Panduan Penggunaan</a></li>
<li class="scroll-to-section"><a href="#tentang">Tentang Pakar</a></li>
<li><a href="{{ route('diagnosa') }}">Diagnosa</a></li>
<li>
@if(Auth::check())
@if(Auth::user()->role === 'admin')
<!-- Jika admin klik tombol Diagnosa, kita mencegah pengalihan dan memuat ulang halaman /home -->
<a href="#" onclick="reloadHomePage()">Diagnosa</a>
@else
<!-- Jika user klik tombol Diagnosa, arahkan ke halaman diagnosa -->
<a href="{{ route('diagnosa') }}">Diagnosa</a>
@endif
@else
<!-- Jika pengguna belum login, tombol Login akan muncul -->
<a href="{{ route('login') }}">Diagnosa</a>
@endif
</li>
<li class="d-flex align-items-center">
@if(Auth::check())
<a href="#" class="main-red-button" onclick="togglePopup()">Profil</a>
@if(Auth::user()->role === 'user')
<!-- Tombol Profil hanya untuk user -->
<a href="{{ route('profile') }}" class="main-red-button">Profil</a>
@endif
<a href="#" class="main-red-button"
onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
Logout

View File

@ -11,7 +11,18 @@
<form id="search" action="#" method="GET">
<fieldset style="display: flex; justify-content: space-between; align-items: center; gap: 10px;">
<div class="email">Masalah Pada Tanaman</div>
@if(Auth::check())
@if(Auth::user()->role === 'admin')
<!-- Jika admin klik tombol Konsultasi Sekarang, kita refresh halaman /home -->
<a href="#" class="main-button" onclick="reloadHomePage()">Konsultasi Sekarang</a>
@else
<!-- Jika user klik tombol Konsultasi Sekarang, diarahkan ke halaman diagnosa -->
<a href="{{ route('diagnosa') }}" class="main-button">Konsultasi Sekarang</a>
@endif
@else
<!-- Jika pengguna belum login, tombol Login bisa muncul (sesuai kebutuhan Anda) -->
<a href="{{ route('login') }}" class="main-button">Konsultasi Sekarang</a>
@endif
</fieldset>
</form>

View File

@ -34,19 +34,19 @@
// Admin Routes
Route::middleware('admin')->group(function () {
// Dashboard Admin
Route::get('/dashboard', [DashboardController::class, 'dashboard'])->name('dashboard')->middleware('auth');
Route::get('/dashboard', [DashboardController::class, 'dashboard'])->name('dashboard');
Route::get('/admin/dashboard', [DashboardController::class, 'dashboard'])->name('admin.dashboard');
// Daftar User
Route::get('/daftaruser', [DaftarUserController::class, 'index'])->name('daftaruser')->middleware('auth');
Route::get('/daftaruser', [DaftarUserController::class, 'index'])->name('daftaruser');
Route::delete('/user/{id}', [DaftarUserController::class, 'destroy'])->name('user.destroy');
Route::post('/user', [DaftarUserController::class, 'store'])->name('user.store');
Route::get('/user/edit/{id}', [DaftarUserController::class, 'edit'])->name('user.edit');
Route::put('/user/update/{id}', [DaftarUserController::class, 'update'])->name('user.update');
// Rules
Route::get('/rules', [RulesController::class, 'index'])->name('rules')->middleware('auth');
Route::get('/rules', [RulesController::class, 'index'])->name('rules');
Route::post('/rules', [RulesController::class, 'store'])->name('rules.store');
Route::put('/rules/{id}', [RulesController::class, 'update'])->name('rules.update');
Route::delete('/rules/{id}', [RulesController::class, 'destroy'])->name('rules.destroy');
@ -65,47 +65,69 @@
Route::delete('/gejala/{id}', [DaftarGejalaController::class, 'destroy'])->name('gejala.destroy');
});
// Route untuk menampilkan form input email
Route::get('lupa-kata-sandi', [LupaPasswordController::class, 'showInputEmail'])->name('lupa.kata.sandi');
Route::middleware('user')->group(function () {
// Route untuk mengirimkan OTP ke email
Route::post('kirim-otp', [LupaPasswordController::class, 'sendOtp'])->name('otp.send');
// Update pass Profile
Route::post('/profile/update-password', [ProfileController::class, 'updatePassword'])->name('user.updatePassword');
// Route untuk menampilkan form OTP
Route::get('otp', [LupaPasswordController::class, 'showOtpForm'])->name('otp.form');
// Diagnosa Routes
Route::get('diagnosa', [DiagnosaController::class, 'index'])->name('diagnosa');
Route::post('/diagnosa/process', [DiagnosaController::class, 'process'])->name('diagnosa.process');
Route::get('/diagnosa/hasil/{id}', [DiagnosaController::class, 'hasil'])->name('diagnosa.hasil');
// Route untuk memverifikasi OTP
Route::post('verifikasi-otp', [LupaPasswordController::class, 'verifyOtp'])->name('otp.verify');
// Route untuk menampilkan form reset password
Route::get('reset-password', [LupaPasswordController::class, 'showResetPass'])->name('reset.password.form');
// Route untuk melakukan reset password
Route::post('reset-password', [LupaPasswordController::class, 'resetPassword'])->name('reset.password');
// Update pass Profile
Route::post('/profile/update-password', [ProfileController::class, 'updatePassword'])
->name('user.updatePassword')
->middleware('auth');
// Registration Routes
Route::get('register', [RegisterController::class, 'showRegistrationForm'])->name('register');
Route::post('register', [RegisterController::class, 'register']);
// Diagnosa Routes
Route::get('diagnosa', [DiagnosaController::class, 'index'])->name('diagnosa')->middleware('auth');
Route::post('/diagnosa/process', [DiagnosaController::class, 'process'])->name('diagnosa.process')->middleware('auth');
Route::get('/diagnosa/hasil/{id}', [DiagnosaController::class, 'hasil'])->name('diagnosa.hasil')->middleware('auth');
// Lupa Pass
Route::get('/lupapass', function () {
return view('layouts.inputemail');
})->name('lupapass');
// Profile Route
Route::get('profile', [ProfileController::class, 'index'])->name('profile');
Route::post('/profile/update', [ProfileController::class, 'updateProfile'])->name('user.updateProfile');
// Login Routes
Route::get('login', [LoginController::class, 'showLoginForm'])->name('login');
Route::post('login', [LoginController::class, 'login']);
// Route detail penyakit
Route::get('/detailpenyakit', function () {
return view('layouts.diagnosa.detailpenyakit');
})->name('detailpenyakit');
Route::get('/history', [HistoryController::class, 'index'])->name('history');
// Route ke halaman detail riwayat
Route::get('/history/{id}/detail', [HistoryController::class, 'detail'])->name('history.detail');
Route::get('/history/{id}/print', [HistoryController::class, 'print'])->name('history.print');
// Rincian detail penyakit
Route::get('/penyakit/{id}', [PenyakitController::class, 'show'])->name('rinciandetailpenyakit');
});
Route::middleware('guest')->group(function () {
// Route untuk menampilkan form input email
Route::get('lupa-kata-sandi', [LupaPasswordController::class, 'showInputEmail'])->name('lupa.kata.sandi');
// Route untuk mengirimkan OTP ke email
Route::post('kirim-otp', [LupaPasswordController::class, 'sendOtp'])->name('otp.send');
// Route untuk menampilkan form OTP
Route::get('otp', [LupaPasswordController::class, 'showOtpForm'])->name('otp.form');
// Route untuk memverifikasi OTP
Route::post('verifikasi-otp', [LupaPasswordController::class, 'verifyOtp'])->name('otp.verify');
// Route untuk menampilkan form reset password
Route::get('reset-password', [LupaPasswordController::class, 'showResetPass'])->name('reset.password.form');
// Route untuk melakukan reset password
Route::post('reset-password', [LupaPasswordController::class, 'resetPassword'])->name('reset.password');
// Registration Routes
Route::get('register', [RegisterController::class, 'showRegistrationForm'])->name('register');
Route::post('register', [RegisterController::class, 'register']);
// Lupa Pass
Route::get('/lupapass', function () {
return view('layouts.inputemail');
})->name('lupapass');
// Login Routes
Route::get('login', [LoginController::class, 'showLoginForm'])->name('login');
Route::post('login', [LoginController::class, 'login']);
});
// Login Admin
Route::get('/homeadmin', [AdminHomeController::class, 'index'])->middleware('auth');
@ -118,30 +140,9 @@
// Home Route
Route::get('home', [HomeController::class, 'index'])->name('home');
// Profile Route
Route::get('profile', [ProfileController::class, 'index'])->name('profile')->middleware('auth');
Route::post('/profile/update', [ProfileController::class, 'updateProfile'])->name('user.updateProfile');
// Gejala Routes
// Route::get('/diagnosa', [GejalaController::class, 'index'])->name('diagnosa')->middleware('auth');
Route::post('/gejala/fetch', [GejalaController::class, 'fetch'])->name('gejala.fetch');
// Route untuk proses penambahan gejala
// Route::post('/diagnosa/add-gejala', [GejalaController::class, 'process'])->name('diagnosa.process')->middleware('auth');
// Route detail penyakit
Route::get('/detailpenyakit', function () {
return view('layouts.diagnosa.detailpenyakit');
})->name('detailpenyakit')->middleware('auth');
Route::middleware('auth')->group(function () {
// Route ke halaman history via controller
Route::get('/history', [HistoryController::class, 'index'])->name('history');
// Route ke halaman detail riwayat
Route::get('/history/{id}/detail', [HistoryController::class, 'detail'])->name('history.detail');
Route::get('/history/{id}/print', [HistoryController::class, 'print'])->name('history.print')->middleware('auth');
});
// Rincian detail penyakit
Route::get('/penyakit/{id}', [PenyakitController::class, 'show'])->name('rinciandetailpenyakit');