MIF_E31230356/routes/web.php

153 lines
4.8 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Admin\LoginController;
use App\Http\Controllers\Admin\AdminController;
use App\Http\Controllers\Admin\GuruController;
use App\Http\Controllers\Admin\KelasController;
use App\Http\Controllers\Admin\SiswaController;
use App\Http\Controllers\Admin\MapelController;
use App\Http\Controllers\Guru\GuruLoginController;
use App\Http\Controllers\Guru\DashboardController;
use App\Http\Controllers\Guru\GuruGuruController;
use App\Http\Controllers\Guru\GuruSiswaController;
use App\Http\Controllers\Guru\GuruKelasController;
use App\Http\Controllers\Guru\GuruMapelController;
use App\Http\Controllers\Guru\GuruLeaderboardController;
use App\Http\Controllers\Guru\GuruProfilController;
// ====================
// LANDING PAGE
// ====================
Route::get('/', function () {
return view('auth.landing-page');
})->name('landing-page');
// =======================================================
// LOGIN PAGES (VIEW ONLY)
// =======================================================
// Selector login (opsional)
Route::get('/login', function () {
return view('auth.login-selector');
})->name('login.selector');
// LOGIN ADMIN
Route::get('/admin/login', function () {
return view('auth.login-admin');
})->name('admin.login');
// LOGIN GURU
Route::get('/guru/login', function () {
return view('auth.login-guru');
})->name('guru.login');
// LOGIN SISWA
Route::get('/siswa/login', function () {
return view('auth.login-siswa');
})->name('siswa.login');
// =======================================================
// PROSES LOGIN (POST)
// =======================================================
// ADMIN LOGIN PROCESS
Route::post('/admin/login', [LoginController::class, 'loginAdmin'])
->name('admin.login.submit');
// GURU LOGIN PROCESS
Route::post('/guru/login', function (Request $request) {
$credentials = $request->only('nip', 'password');
if (Auth::guard('guru')->attempt($credentials)) {
return redirect()->route('guru.dashboard');
}
return back()->withErrors(['nip' => 'NIP atau password salah']);
})->name('guru.login.submit');
// SISWA LOGIN PROCESS
Route::post('/siswa/login', function (Request $request) {
$credentials = $request->only('nisn', 'password');
if (Auth::guard('siswa')->attempt($credentials)) {
return redirect()->route('siswa.dashboard');
}
return back()->withErrors(['nisn' => 'NISN atau password salah']);
})->name('siswa.login.submit');
// =======================================================
// ADMIN AREA (HARUS LOGIN ADMIN)
// =======================================================
Route::middleware(['auth:admin'])->prefix('admin')->name('admin.')->group(function () {
Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('dashboard');
Route::get('/notif', function () {
return view('admin.notif');
})->name('notif');
Route::get('/profil', function () {
return view('admin.profil');
})->name('profil');
// CRUD AREA
Route::resource('guru', GuruController::class);
Route::resource('siswa', SiswaController::class);
Route::resource('kelas', KelasController::class);
Route::resource('mapel', MapelController::class);
Route::resource('challenge', ChallengeController::class);
Route::get('leaderboard', [LeaderboardController::class, 'index'])
->name('leaderboard.index');
// LOGOUT ADMIN
Route::post('/logout', [LoginController::class, 'logout'])
->name('logout');
});
// =======================================================
// GURU AREA
// =======================================================
Route::middleware(['auth:guru'])->prefix('guru')->name('guru.')->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index'])
->name('dashboard');
// Daftar Guru (Read Only)
Route::get('/daftar-guru', [GuruGuruController::class, 'index'])->name('guru.index');
// Daftar Kelas (Read Only)
Route::get('/daftar-kelas', [GuruKelasController::class, 'index'])->name('kelas.index');
// Daftar Siswa (Read Only)
Route::get('/daftar-siswa', [GuruSiswaController::class, 'index'])->name('siswa.index');
// Profil (Edit)
Route::get('/profil', [GuruProfilController::class, 'show'])->name('profil.show');
Route::put('/profil', [GuruProfilController::class, 'update'])->name('profil.update');
// LOGOUT GURU
Route::post('/logout', [GuruLoginController::class, 'logout'])->name('logout');
});
// =======================================================
// SISWA AREA
// =======================================================
Route::middleware(['auth:siswa'])->group(function () {
Route::get('/siswa/dashboard', function () {
return view('siswa.dashboard');
})->name('siswa.dashboard');
});