MIF_E31232094/routes/web.php

104 lines
6.2 KiB
PHP

<?php
use App\Http\Controllers\AuthController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\DiagnosisController;
use App\Http\Controllers\HistoryController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Auth\ForgotPasswordController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\NotificationController;
use App\Http\Controllers\DiseaseController;
use App\Http\Controllers\WelcomeController;
use App\Http\Controllers\UserController;
// Tambah di bagian use (atas file):
use App\Http\Controllers\GuestDiagnosisController;
// Tambah setelah Route::get('/', ...) :
Route::get('/guest/symptoms', [GuestDiagnosisController::class, 'symptoms'])->name('guest.symptoms');
Route::post('/guest/diagnosis', [GuestDiagnosisController::class, 'process'])->name('guest.diagnosis');
// ── Halaman utama ─────────────────────────────────────────────────
Route::get('/', [WelcomeController::class, 'index'])->name('home');
Route::delete('/profile/delete', [ProfileController::class, 'destroy'])->name('profile.destroy')->middleware('auth');
// ── Guest routes ──────────────────────────────────────────────────
Route::middleware('guest')->group(function () {
Route::get('/login', [AuthController::class, 'showLogin'])->name('login');
Route::get('/register', [AuthController::class, 'showRegister'])->name('register');
Route::post('/login', [AuthController::class, 'login']);
Route::post('/register',[AuthController::class, 'register']);
Route::get('/forgot-password', [ForgotPasswordController::class, 'showEmailForm'])->name('password.email');
Route::post('/forgot-password', [ForgotPasswordController::class, 'sendOtp'])->name('password.send-otp');
Route::get('/forgot-password/otp', [ForgotPasswordController::class, 'showOtpForm'])->name('password.otp.form');
Route::post('/forgot-password/otp', [ForgotPasswordController::class, 'verifyOtp'])->name('password.otp.verify');
Route::post('/forgot-password/otp/resend', [ForgotPasswordController::class, 'resendOtp'])->name('password.otp.resend');
Route::get('/forgot-password/reset', [ForgotPasswordController::class, 'showResetForm'])->name('password.reset.form');
Route::post('/forgot-password/reset', [ForgotPasswordController::class, 'resetPassword'])->name('password.reset');
});
// ── Logout ────────────────────────────────────────────────────────
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
// ── Authenticated routes ─────────────────────────────────────────
Route::middleware('auth')->group(function () {
// Dashboard
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
// Diagnosis
Route::prefix('diagnosis')->name('diagnosis.')->group(function () {
Route::get('/', [DiagnosisController::class, 'index'])->name('index');
Route::get('/create', [DiagnosisController::class, 'create'])->name('create');
Route::post('/', [DiagnosisController::class, 'store'])->name('store');
Route::get('/{id}/result', [DiagnosisController::class, 'result'])->name('result');
});
// Riwayat
Route::get('/riwayat', [HistoryController::class, 'index'])->name('history');
// ── KAMUS (READ dulu) ─────────────────────────────
Route::get('/kamus', [DiseaseController::class, 'index'])->name('diseases.index');
// ⚠️ JANGAN TARUH {disease} DI ATAS
// nanti bentrok dengan /kamus/tambah
// Notifikasi
Route::get('/notifications', [NotificationController::class, 'index'])->name('notifications');
Route::post('/notifications/{id}/read', [NotificationController::class, 'markRead'])->name('notifications.read');
Route::delete('/notifications/{id}', [NotificationController::class, 'destroy'])->name('notifications.destroy');
Route::delete('/notifications', [NotificationController::class, 'destroyAll'])->name('notifications.destroyAll');
// Profil
Route::get('/profile', [ProfileController::class, 'show'])->name('profile');
Route::post('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::post('/profile/password', [ProfileController::class, 'updatePassword'])->name('profile.password');
});
// ── ADMIN ONLY ───────────────────────────────────────────────────
Route::middleware(['auth', 'role:admin'])->group(function () {
Route::get('/kamus/tambah', [DiseaseController::class, 'create'])->name('diseases.create');
Route::post('/kamus', [DiseaseController::class, 'store'])->name('diseases.store');
Route::delete('/kamus/{disease}', [DiseaseController::class, 'destroy'])->name('diseases.destroy');
Route::get('/diseases/{disease}/edit',[DiseaseController::class, 'edit'])->name('diseases.edit');
Route::put('/diseases/{disease}', [DiseaseController::class, 'update'])->name('diseases.update');
// User management
Route::get('/users', [UserController::class, 'index'])->name('users.index');
Route::patch('/users/{user}/role', [UserController::class, 'updateRole'])->name('users.updateRole');
Route::delete('/users/{user}', [UserController::class, 'destroy'])->name('users.destroy');
});
// ── TARUH PALING BAWAH (ANTI BENTROK) ───────────────────────────
Route::get('/kamus/{disease}', [DiseaseController::class, 'show'])
->middleware('auth')
->name('diseases.show');
// Redirect /diseases/{id} ke /kamus/{id} supaya tidak 405
Route::get('/diseases/{disease}', function($disease) {
return redirect()->route('diseases.show', $disease);
})->middleware('auth');