MIF_E31220044/routes/web.php

190 lines
9.6 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\Author\PostController as AuthorPostController;
use App\Http\Controllers\DataUserController;
use App\Http\Controllers\DataCategoryController;
use App\Http\Controllers\ForgotPasswordController;
use App\Http\Controllers\PostController;
use App\Http\Controllers\PostApprovalController;
use App\Http\Controllers\AlternatifController;
use App\Http\Controllers\LoginController;
use App\Http\Controllers\BobotKriteriaController;
use App\Http\Controllers\PenilaianController;
use App\Http\Controllers\KriteriaController;
use App\Http\Controllers\BobotController;
use App\Http\Controllers\LaporanController;
use App\Http\Controllers\StatistikController;
use App\Http\Controllers\LogAktivitasController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\RekomendasiController;
use Illuminate\Foundation\Auth\SendEmail;
use Illuminate\Support\Facades\Auth;
use PharIo\Manifest\Author;
use Illuminate\Http\Request;
use App\Models\User;
// Rute untuk autentikasi
Route::prefix('/')->middleware('guest')->group(function () {
// Login routes
Route::get('login', [AuthController::class, 'showLoginForm'])->name('login');
Route::post('login', [AuthController::class, 'login'])->name('login.process');
// Register routes
Route::get('register', [AuthController::class, 'showRegister'])->name('register');
Route::post('register', [AuthController::class, 'register'])->name('register.process');
// Forgot password routes
Route::prefix('forgot-password')->name('forgot_password.')->group(function () {
Route::get('/', [ForgotPasswordController::class, 'forgotPassword'])->name('index');
Route::post('/process', [ForgotPasswordController::class, 'forgotPasswordProcess'])->name('process');
});
// Token validation and reset password
Route::prefix('validation-forgot-password')->name('validation_forgot_password.')->group(function () {
Route::get('/{token}', [ForgotPasswordController::class, 'validationForgotPassword'])->name('index');
Route::post('/process', [ForgotPasswordController::class, 'validationForgotPasswordProcess'])->name('process');
});
});
// root URL ke halaman login
Route::get('/', function () {
return view('landing');
});
// Rute untuk dashboard dengan middleware 'auth'
Route::middleware(['auth'])->group(function () {
// Rute untuk profil pengguna
Route::get('/profile', [App\Http\Controllers\UserController::class, 'showProfile'])->name('user.profile');
Route::put('/profile', [App\Http\Controllers\UserController::class, 'updateProfile'])->name('user.profile.update');
// Dashboard Routes
Route::get('/admin/dashboard', [AuthController::class, 'adminDashboard'])->name('admin.dashboard-admin');
Route::get('/author/dashboard', [AuthController::class, 'authorDashboard'])->name('author.dashboard-author');
// Admin Routes
Route::middleware(['auth', 'role:admin'])->prefix('admin')->group(function () {
// Master Data Management
Route::resource('kriteria', KriteriaController::class);
Route::resource('bobot', BobotController::class);
// Ubah route alternatif admin menjadi resource
Route::resource('alternatif', AlternatifController::class)->names([
'index' => 'admin.alternatif.index',
'create' => 'admin.alternatif.create',
'store' => 'admin.alternatif.store',
'edit' => 'admin.alternatif.edit',
'update' => 'admin.alternatif.update',
'destroy' => 'admin.alternatif.destroy',
]);
// User Management
Route::get('users', [DataUserController::class, 'DataUser'])->name('datauser');
Route::get('users/{id}/edit', [DataUserController::class, 'edit'])->name('users.edit');
Route::put('users/{id}', [DataUserController::class, 'update'])->name('users.update');
Route::delete('users/{id}', [DataUserController::class, 'destroy'])->name('users.destroy');
// Content Management
Route::get('categories', [DataCategoryController::class, 'index'])->name('datacategory');
Route::post('categories', [DataCategoryController::class, 'store'])->name('categories.store');
Route::put('categories/{id}', [DataCategoryController::class, 'update'])->name('categories.update');
Route::delete('categories/{id}', [DataCategoryController::class, 'destroy'])->name('categories.destroy');
});
// Author Routes
Route::middleware(['auth', 'role:author'])->prefix('author')->group(function () {
Route::resource('alternatif', AlternatifController::class);
Route::get('bobot-kriteria', [BobotKriteriaController::class, 'index'])->name('bobot.kriteria');
Route::get('penilaian', [PenilaianController::class, 'index'])->name('penilaian.index');
Route::get('hasil-penilaian', [PenilaianController::class, 'hasil'])->name('penilaian.hasil');
});
// Tambahkan route dashboard
Route::get('/dashboard', function() {
if (Auth::user()->role == 'admin') {
return redirect()->route('admin.dashboard-admin');
}
return redirect()->route('author.dashboard-author');
})->name('dashboard');
// Rute untuk logout
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
// Rute untuk pengelolaan data pengguna
Route::prefix('datauser')->group(function () {
Route::get('/', [DataUserController::class, 'DataUser'])->name('datauser');
Route::get('/users/{id}/edit', [DataUserController::class, 'edit'])->name('users.edit');
Route::put('/users/{id}', [DataUserController::class, 'update'])->name('users.update');
});
// Rute untuk pengelolaan kategori
Route::prefix('datacategory')->group(function () {
Route::get('/', [DataCategoryController::class, 'index'])->name('datacategory');
Route::post('/categories', [DataCategoryController::class, 'store'])->name('categories.store');
Route::delete('/categories/{id}', [DataCategoryController::class, 'destroy'])->name('categories.destroy');
Route::put('/categories/{id}', [DataCategoryController::class, 'update'])->name('categories.update');
});
// Rute untuk rekomendasi
Route::post('/rekomendasi', [RekomendasiController::class, 'index'])->name('rekomendasi');
Route::get('/rekomendasi', [RekomendasiController::class, 'index'])->name('user.rekomendasi.index');
Route::prefix('posts')->controller(AuthorPostController::class)->name('posts.')->group(function () {
Route::get('/', 'index')->name('index');
Route::post('/', 'store')->name('store');
Route::put('/{id}', 'update')->name('update');
Route::delete('/{id}', 'destroy')->name('destroy');
});
Route::prefix('approval-posts')->controller(PostApprovalController::class)->name('approval-posts.')->group(function () {
Route::get('/', 'index')->name('index');
Route::put('/{id}', 'approve')->name('approve');
Route::put('/reject/{id}', 'reject')->name('reject');
});
// Rute untuk bobot kriteria
Route::prefix('bobot-kriteria')->group(function () {
Route::get('/', [BobotKriteriaController::class, 'index'])->name('bobot.kriteria');
Route::post('/store', [BobotKriteriaController::class, 'store'])->name('bobot.kriteria.store');
Route::get('/edit/{id}', [BobotKriteriaController::class, 'edit'])->name('bobot-kriteria.edit');
Route::put('/update/{id}', [BobotKriteriaController::class, 'update'])->name('bobot-kriteria.update');
Route::delete('/destroy/{id}', [BobotKriteriaController::class, 'destroy'])->name('bobot-kriteria.destroy');
});
Route::prefix('kriteria')->group(function () {
Route::get('/', [KriteriaController::class, 'index'])->name('kriteria.index');
Route::post('/store', [KriteriaController::class, 'store'])->name('kriteria.store');
Route::get('/edit/{id}', [KriteriaController::class, 'edit'])->name('kriteria.edit');
Route::put('/update/{id}', [KriteriaController::class, 'update'])->name('kriteria.update');
Route::delete('/destroy/{id}', [KriteriaController::class, 'destroy'])->name('kriteria.destroy');
});
Route::get('/penilaian', [PenilaianController::class, 'index'])->name('penilaian.index');
Route::post('/penilaian', [PenilaianController::class, 'store'])->name('penilaian.store');
Route::get('/penilaian/hasil', [PenilaianController::class, 'hasil'])->name('penilaian.hasil');
Route::delete('/penilaian/destroy', [PenilaianController::class, 'destroy'])->name('penilaian.destroy');
});
Route::get('/admin', function () {
// Admin content
})->middleware('role:admin');
// Contoh route yang mungkin Anda miliki
Route::get('/author/alternatif', [AuthorController::class, 'alternatif'])->middleware('role:author');
// Atau jika mendefinisikan route secara manual
Route::get('/alternatif', [AlternatifController::class, 'showAlternatif'])->name('alternatif.index');
Route::get('/alternatif/admin', [AlternatifController::class, 'admin'])->name('alternatif.admin');
Route::middleware(['auth', 'admin'])->group(function () {
Route::get('/admin/penilaian', [PenilaianController::class, 'index'])->name('admin.penilaian.index');
Route::post('/admin/penilaian/store', [PenilaianController::class, 'store'])->name('penilaian.store');
Route::delete('/admin/penilaian/delete-all', [PenilaianController::class, 'deleteAll'])->name('penilaian.deleteAll');
});
Route::get('/input-data', [UserController::class, 'showInputData'])->name('user.input-data.index');
Route::post('/input-data', [UserController::class, 'processInputData'])->name('user.input-data.process');