245 lines
11 KiB
PHP
245 lines
11 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Web\Auth\ForgotPasswordController;
|
|
use App\Http\Controllers\Web\Auth\LoginController;
|
|
use App\Http\Controllers\Web\Auth\RegisterController;
|
|
use App\Http\Controllers\Web\Auth\ResetPasswordController;
|
|
use App\Http\Controllers\Web\Auth\SocialAuthController;
|
|
use App\Http\Controllers\Web\Auth\TwoFactorTokenController;
|
|
use App\Http\Controllers\Web\Auth\VerificationController;
|
|
use App\Http\Controllers\Web\Authorization\PermissionsController;
|
|
use App\Http\Controllers\Web\Authorization\RolePermissionsController;
|
|
use App\Http\Controllers\Web\Authorization\RolesController;
|
|
use App\Http\Controllers\Web\DashboardController;
|
|
use App\Http\Controllers\Web\PostLoginDispatchController;
|
|
use App\Http\Controllers\Web\InstallController;
|
|
use App\Http\Controllers\Web\Profile\AvatarController as ProfileAvatarController;
|
|
use App\Http\Controllers\Web\Profile\DetailsController as ProfileDetailsController;
|
|
use App\Http\Controllers\Web\Profile\LoginDetailsController as ProfileLoginDetailsController;
|
|
use App\Http\Controllers\Web\Profile\ProfileController;
|
|
use App\Http\Controllers\Web\Profile\SessionsController as ProfileSessionsController;
|
|
use App\Http\Controllers\Web\SettingsController;
|
|
use App\Http\Controllers\Web\TwoFactorController;
|
|
use App\Http\Controllers\Web\Users\AvatarController as UsersAvatarController;
|
|
use App\Http\Controllers\Web\Users\DetailsController as UsersDetailsController;
|
|
use App\Http\Controllers\Web\Users\LoginDetailsController as UsersLoginDetailsController;
|
|
use App\Http\Controllers\Web\Users\SessionsController as UsersSessionsController;
|
|
use App\Http\Controllers\Web\Users\UsersController;
|
|
use Inertia\Inertia;
|
|
|
|
/**
|
|
* Authentication
|
|
*/
|
|
Route::get('login', [LoginController::class, 'show']);
|
|
Route::post('login', [LoginController::class, 'login'])->name('login');
|
|
Route::get('logout', [LoginController::class, 'logout'])->name('auth.logout');
|
|
|
|
Route::group(['middleware' => ['registration', 'guest']], function () {
|
|
Route::get('register', [RegisterController::class, 'show']);
|
|
Route::post('register', [RegisterController::class, 'register'])->name('register');
|
|
});
|
|
|
|
Route::get('email/verify', [VerificationController::class, 'show'])->name('verification.notice');
|
|
Route::get('email/verify/{id}/{hash}', [VerificationController::class, 'verify'])->name('verification.verify');
|
|
Route::post('email/resend', [VerificationController::class, 'resend'])->name('verification.resend');
|
|
|
|
Route::group(['middleware' => ['password-reset', 'guest']], function () {
|
|
Route::get('password/reset', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('password.request');
|
|
Route::post('password/email', [ForgotPasswordController::class, 'sendResetLinkEmail'])->name('password.email');
|
|
Route::get('password/reset/{token}', [ResetPasswordController::class, 'showResetForm'])->name('password.reset');
|
|
Route::post('password/reset', [ResetPasswordController::class, 'reset'])->name('password.update');
|
|
});
|
|
|
|
/**
|
|
* Two-Factor Authentication
|
|
*/
|
|
Route::group(['middleware' => 'two-factor'], function () {
|
|
Route::get('auth/two-factor-authentication', [TwoFactorTokenController::class, 'show'])
|
|
->name('auth.token');
|
|
Route::post('auth/two-factor-authentication', [TwoFactorTokenController::class, 'update'])
|
|
->name('auth.token.validate');
|
|
});
|
|
|
|
/**
|
|
* Social Login
|
|
*/
|
|
Route::get('auth/{provider}/login', [SocialAuthController::class, 'redirectToProvider'])
|
|
->name('social.login');
|
|
Route::get('auth/{provider}/callback', [SocialAuthController::class, 'handleProviderCallback']);
|
|
|
|
/**
|
|
* Impersonate Routes
|
|
*/
|
|
Route::group(['middleware' => 'auth'], function () {
|
|
Route::impersonate();
|
|
});
|
|
|
|
Route::get('/approval-notice', fn() => Inertia::render('auth/Approval'))
|
|
->middleware(['auth', 'verified'])
|
|
->name('approval.notice');
|
|
|
|
Route::group(['middleware' => ['auth', 'verified', 'approved', 'password-change']], function () {
|
|
|
|
/**
|
|
* Dashboard
|
|
*/
|
|
Route::get('/', [DashboardController::class, 'index'])->name('dashboard');
|
|
Route::get('/', [PostLoginDispatchController::class, 'index'])->name('dashboard');
|
|
|
|
/**
|
|
* User Profile
|
|
*/
|
|
Route::group(['prefix' => 'profile'], function () {
|
|
Route::get('/', [ProfileController::class, 'show'])->name('profile');
|
|
Route::put('details', [ProfileDetailsController::class, 'update'])->name('profile.update.details');
|
|
|
|
Route::post('avatar', [ProfileAvatarController::class, 'update'])->name('profile.update.avatar');
|
|
Route::post('avatar/external', [ProfileAvatarController::class, 'updateExternal'])
|
|
->name('profile.update.avatar-external');
|
|
|
|
Route::put('login-details', [ProfileLoginDetailsController::class, 'update'])
|
|
->name('profile.update.login-details');
|
|
|
|
Route::get('sessions', [ProfileSessionsController::class, 'index'])
|
|
->name('profile.sessions')
|
|
->middleware('session.database');
|
|
|
|
Route::delete('sessions/{session}/invalidate', [ProfileSessionsController::class, 'destroy'])
|
|
->name('profile.sessions.invalidate')
|
|
->middleware('session.database');
|
|
});
|
|
|
|
/**
|
|
* Two-Factor Authentication Setup
|
|
*/
|
|
Route::group(['middleware' => 'two-factor'], function () {
|
|
Route::post('two-factor/enable', [TwoFactorController::class, 'enable'])
|
|
->name('2fa.enable');
|
|
|
|
Route::post('two-factor/verify', [TwoFactorController::class, 'verify'])
|
|
->name('2fa.verify')
|
|
->middleware('verify-2fa-code');
|
|
|
|
Route::post('two-factor/disable', [TwoFactorController::class, 'disable'])
|
|
->name('2fa.disable');
|
|
});
|
|
|
|
/**
|
|
* User Management
|
|
*/
|
|
Route::resource('users', UsersController::class)
|
|
->except('update')->middleware('permission:users.manage');
|
|
|
|
Route::group(['prefix' => 'users/{user}', 'middleware' => 'permission:users.manage'], function () {
|
|
Route::put('update/approve', [UsersDetailsController::class, 'approve'])
|
|
->name('users.update.approve');
|
|
|
|
Route::put('update/details', [UsersDetailsController::class, 'update'])
|
|
->name('users.update.details');
|
|
Route::put('update/login-details', [UsersLoginDetailsController::class, 'update'])
|
|
->name('users.update.login-details');
|
|
|
|
Route::post('update/avatar', [UsersAvatarController::class, 'update'])
|
|
->name('user.update.avatar');
|
|
Route::post('update/avatar/external', [UsersAvatarController::class, 'updateExternal'])
|
|
->name('user.update.avatar.external');
|
|
|
|
Route::get('sessions', [UsersSessionsController::class, 'index'])
|
|
->name('user.sessions')
|
|
->middleware('session.database');
|
|
|
|
Route::delete('sessions/{session}/invalidate', [UsersSessionsController::class, 'destroy'])
|
|
->name('user.sessions.invalidate')
|
|
->middleware('session.database');
|
|
|
|
Route::post('two-factor/enable', [TwoFactorController::class, 'enable'])
|
|
->name('user.two-factor.enable');
|
|
Route::post('two-factor/disable', [TwoFactorController::class, 'disable'])
|
|
->name('user.two-factor.disable');
|
|
});
|
|
|
|
/**
|
|
* Roles & Permissions
|
|
*/
|
|
Route::resource('roles', RolesController::class)
|
|
->except('show')
|
|
->middleware('permission:roles.manage');
|
|
|
|
Route::post('permissions/save', [RolePermissionsController::class, 'update'])
|
|
->name('permissions.save')
|
|
->middleware('permission:permissions.manage');
|
|
|
|
Route::resource('permissions', PermissionsController::class)
|
|
->middleware('permission:permissions.manage');
|
|
|
|
/**
|
|
* Settings
|
|
*/
|
|
Route::get('settings', [SettingsController::class, 'general'])->name('settings.general')
|
|
->middleware('permission:settings.general');
|
|
|
|
Route::post('settings/general', [SettingsController::class, 'update'])->name('settings.general.update')
|
|
->middleware('permission:settings.general');
|
|
|
|
Route::get('settings/auth', [SettingsController::class, 'auth'])->name('settings.auth')
|
|
->middleware('permission:settings.auth');
|
|
|
|
Route::post('settings/auth', [SettingsController::class, 'update'])->name('settings.auth.update')
|
|
->middleware('permission:settings.auth');
|
|
|
|
Route::post('settings/auth/2fa/enable', [SettingsController::class, 'enableTwoFactor'])
|
|
->name('settings.auth.2fa.enable')
|
|
->middleware('permission:settings.auth');
|
|
|
|
Route::post('settings/auth/2fa/disable', [SettingsController::class, 'disableTwoFactor'])
|
|
->name('settings.auth.2fa.disable')
|
|
->middleware('permission:settings.auth');
|
|
|
|
Route::post('settings/auth/password-change/enable', [SettingsController::class, 'enablePasswordChange'])
|
|
->name('settings.auth.password-change.enable')
|
|
->middleware('permission:settings.auth');
|
|
|
|
Route::post('settings/auth/password-change/disable', [SettingsController::class, 'disablePasswordChange'])
|
|
->name('settings.auth.password-change.disable')
|
|
->middleware('permission:settings.auth');
|
|
|
|
Route::post('settings/auth/approval/enable', [SettingsController::class, 'enableApproval'])
|
|
->name('settings.auth.approval.enable')
|
|
->middleware('permission:settings.auth');
|
|
|
|
Route::post('settings/auth/approval/disable', [SettingsController::class, 'disableApproval'])
|
|
->name('settings.auth.approval.disable')
|
|
->middleware('permission:settings.auth');
|
|
|
|
Route::post('settings/auth/registration/captcha/enable', [SettingsController::class, 'enableCaptcha'])
|
|
->name('settings.registration.captcha.enable')
|
|
->middleware('permission:settings.auth');
|
|
|
|
Route::post('settings/auth/registration/captcha/disable', [SettingsController::class, 'disableCaptcha'])
|
|
->name('settings.registration.captcha.disable')
|
|
->middleware('permission:settings.auth');
|
|
|
|
Route::get('settings/notifications', [SettingsController::class, 'notifications'])
|
|
->name('settings.notifications')
|
|
->middleware('permission:settings.notifications');
|
|
|
|
Route::post('settings/notifications', [SettingsController::class, 'update'])
|
|
->name('settings.notifications.update')
|
|
->middleware('permission:settings.notifications');
|
|
});
|
|
|
|
/**
|
|
* Installation
|
|
*/
|
|
Route::group(['prefix' => 'install'], function () {
|
|
Route::get('/', [InstallController::class, 'index'])->name('install.start');
|
|
Route::get('requirements', [InstallController::class, 'requirements'])->name('install.requirements');
|
|
Route::get('permissions', [InstallController::class, 'permissions'])->name('install.permissions');
|
|
Route::get('database', [InstallController::class, 'databaseInfo'])->name('install.database');
|
|
Route::get('start-installation', [InstallController::class, 'installation'])->name('install.installation.start');
|
|
Route::post('start-installation', [InstallController::class, 'installation'])->name('install.installation');
|
|
Route::post('install-app', [InstallController::class, 'install'])->name('install.install');
|
|
Route::get('complete', [InstallController::class, 'complete'])->name('install.complete');
|
|
Route::get('error', [InstallController::class, 'error'])->name('install.error');
|
|
});
|