scoobytime/routes/web.php
2024-12-04 20:57:30 +01:00

191 lines
7.6 KiB
PHP

<?php
/**
* Authentication
*/
Route::get('login', 'Auth\LoginController@show');
Route::post('login', 'Auth\LoginController@login');
Route::get('logout', 'Auth\LoginController@logout')->name('auth.logout');
Route::group(['middleware' => ['registration', 'guest']], function () {
Route::get('register', 'Auth\RegisterController@show');
Route::post('register', 'Auth\RegisterController@register');
});
Route::emailVerification();
Route::group(['middleware' => ['password-reset', 'guest']], function () {
Route::resetPassword();
});
/**
* Two-Factor Authentication
*/
Route::group(['middleware' => 'two-factor'], function () {
Route::get('auth/two-factor-authentication', 'Auth\TwoFactorTokenController@show')->name('auth.token');
Route::post('auth/two-factor-authentication', 'Auth\TwoFactorTokenController@update')->name('auth.token.validate');
});
/**
* Social Login
*/
Route::get('auth/{provider}/login', 'Auth\SocialAuthController@redirectToProvider')->name('social.login');
Route::get('auth/{provider}/callback', 'Auth\SocialAuthController@handleProviderCallback');
/**
* Impersonate Routes
*/
Route::group(['middleware' => 'auth'], function () {
Route::impersonate();
});
Route::group(['middleware' => ['auth', 'verified']], function () {
/**
* Dashboard
*/
Route::get('/', 'DashboardController@index')->name('dashboard');
/**
* User Profile
*/
Route::group(['prefix' => 'profile', 'namespace' => 'Profile'], function () {
Route::get('/', 'ProfileController@show')->name('profile');
Route::get('activity', 'ActivityController@show')->name('profile.activity');
Route::put('details', 'DetailsController@update')->name('profile.update.details');
Route::post('avatar', 'AvatarController@update')->name('profile.update.avatar');
Route::post('avatar/external', 'AvatarController@updateExternal')
->name('profile.update.avatar-external');
Route::put('login-details', 'LoginDetailsController@update')
->name('profile.update.login-details');
Route::get('sessions', 'SessionsController@index')
->name('profile.sessions')
->middleware('session.database');
Route::delete('sessions/{session}/invalidate', 'SessionsController@destroy')
->name('profile.sessions.invalidate')
->middleware('session.database');
});
/**
* Two-Factor Authentication Setup
*/
Route::group(['middleware' => 'two-factor'], function () {
Route::post('two-factor/enable', 'TwoFactorController@enable')->name('two-factor.enable');
Route::get('two-factor/verification', 'TwoFactorController@verification')
->name('two-factor.verification')
->middleware('verify-2fa-code');
Route::post('two-factor/verify', 'TwoFactorController@verify')
->name('two-factor.verify')
->middleware('verify-2fa-code');
Route::post('two-factor/disable', 'TwoFactorController@disable')->name('two-factor.disable');
});
/**
* User Management
*/
Route::resource('users', 'Users\UsersController')
->except('update')->middleware('permission:users.manage');
Route::group(['prefix' => 'users/{user}', 'middleware' => 'permission:users.manage'], function () {
Route::put('update/details', 'Users\DetailsController@update')->name('users.update.details');
Route::put('update/login-details', 'Users\LoginDetailsController@update')
->name('users.update.login-details');
Route::post('update/avatar', 'Users\AvatarController@update')->name('user.update.avatar');
Route::post('update/avatar/external', 'Users\AvatarController@updateExternal')
->name('user.update.avatar.external');
Route::get('sessions', 'Users\SessionsController@index')
->name('user.sessions')->middleware('session.database');
Route::delete('sessions/{session}/invalidate', 'Users\SessionsController@destroy')
->name('user.sessions.invalidate')->middleware('session.database');
Route::post('two-factor/enable', 'TwoFactorController@enable')->name('user.two-factor.enable');
Route::post('two-factor/disable', 'TwoFactorController@disable')->name('user.two-factor.disable');
});
/**
* Roles & Permissions
*/
Route::group(['namespace' => 'Authorization'], function () {
Route::resource('roles', 'RolesController')->except('show')->middleware('permission:roles.manage');
Route::post('permissions/save', 'RolePermissionsController@update')
->name('permissions.save')
->middleware('permission:permissions.manage');
Route::resource('permissions', 'PermissionsController')->middleware('permission:permissions.manage');
});
/**
* Settings
*/
Route::get('settings', 'SettingsController@general')->name('settings.general')
->middleware('permission:settings.general');
Route::post('settings/general', 'SettingsController@update')->name('settings.general.update')
->middleware('permission:settings.general');
Route::get('settings/auth', 'SettingsController@auth')->name('settings.auth')
->middleware('permission:settings.auth');
Route::post('settings/auth', 'SettingsController@update')->name('settings.auth.update')
->middleware('permission:settings.auth');
Route::post('settings/auth/2fa/enable', 'SettingsController@enableTwoFactor')
->name('settings.auth.2fa.enable')
->middleware('permission:settings.auth');
Route::post('settings/auth/2fa/disable', 'SettingsController@disableTwoFactor')
->name('settings.auth.2fa.disable')
->middleware('permission:settings.auth');
Route::post('settings/auth/registration/captcha/enable', 'SettingsController@enableCaptcha')
->name('settings.registration.captcha.enable')
->middleware('permission:settings.auth');
Route::post('settings/auth/registration/captcha/disable', 'SettingsController@disableCaptcha')
->name('settings.registration.captcha.disable')
->middleware('permission:settings.auth');
Route::get('settings/notifications', 'SettingsController@notifications')
->name('settings.notifications')
->middleware('permission:settings.notifications');
Route::post('settings/notifications', 'SettingsController@update')
->name('settings.notifications.update')
->middleware('permission:settings.notifications');
/**
* Activity Log
*/
Route::get('activity', 'ActivityController@index')->name('activity.index')
->middleware('permission:users.activity');
Route::get('activity/user/{user}/log', 'Users\ActivityController@index')->name('activity.user')
->middleware('permission:users.activity');
});
/**
* Installation
*/
Route::group(['prefix' => 'install'], function () {
Route::get('/', 'InstallController@index')->name('install.start');
Route::get('requirements', 'InstallController@requirements')->name('install.requirements');
Route::get('permissions', 'InstallController@permissions')->name('install.permissions');
Route::get('database', 'InstallController@databaseInfo')->name('install.database');
Route::get('start-installation', 'InstallController@installation')->name('install.installation');
Route::post('start-installation', 'InstallController@installation')->name('install.installation');
Route::post('install-app', 'InstallController@install')->name('install.install');
Route::get('complete', 'InstallController@complete')->name('install.complete');
Route::get('error', 'InstallController@error')->name('install.error');
});