104 lines
6.2 KiB
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'); |