first commit
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\Api\Auth\AuthController;
|
||||
use App\Http\Controllers\Api\Auth\Password\RemindController;
|
||||
use App\Http\Controllers\Api\Auth\Password\ResetController;
|
||||
use App\Http\Controllers\Api\Auth\RegistrationController;
|
||||
use App\Http\Controllers\Api\Auth\SocialLoginController;
|
||||
use App\Http\Controllers\Api\Auth\VerificationController;
|
||||
use App\Http\Controllers\Api\Authorization\PermissionsController;
|
||||
use App\Http\Controllers\Api\Authorization\RolePermissionsController;
|
||||
use App\Http\Controllers\Api\Authorization\RolesController;
|
||||
use App\Http\Controllers\Api\CountriesController;
|
||||
use App\Http\Controllers\Api\Profile\AuthDetailsController;
|
||||
use App\Http\Controllers\Api\Profile\AvatarController as ProfileAvatarController;
|
||||
use App\Http\Controllers\Api\Profile\DetailsController;
|
||||
use App\Http\Controllers\Api\Profile\SessionsController as ProfileSessionsController;
|
||||
use App\Http\Controllers\Api\Profile\TwoFactorController as ProfileTwoFactorController;
|
||||
use App\Http\Controllers\Api\SessionsController;
|
||||
use App\Http\Controllers\Api\SettingsController;
|
||||
use App\Http\Controllers\Api\StatsController;
|
||||
use App\Http\Controllers\Api\Users\AvatarController as UsersAvatarController;
|
||||
use App\Http\Controllers\Api\Users\SessionsController as UsersSessionsController;
|
||||
use App\Http\Controllers\Api\Users\TwoFactorController as UsersTwoFactorController;
|
||||
use App\Http\Controllers\Api\Users\UsersController;
|
||||
|
||||
Route::post('login', [AuthController::class, 'token']);
|
||||
Route::post('login/social', [SocialLoginController::class, 'index']);
|
||||
Route::post('logout', [AuthController::class, 'logout']);
|
||||
|
||||
Route::post('register', [RegistrationController::class, 'index'])->middleware('registration');
|
||||
|
||||
Route::group(['middleware' => ['guest', 'password-reset']], function () {
|
||||
Route::post('password/remind', [RemindController::class, 'index']);
|
||||
Route::post('password/reset', [ResetController::class, 'index']);
|
||||
});
|
||||
|
||||
Route::group(['middleware' => ['auth', 'registration']], function () {
|
||||
Route::post('email/resend', [VerificationController::class, 'resend']);
|
||||
Route::post('email/verify', [VerificationController::class, 'verify']);
|
||||
});
|
||||
|
||||
Route::group(['middleware' => ['auth', 'verified', 'approved']], function () {
|
||||
Route::get('me', [DetailsController::class, 'index']);
|
||||
Route::patch('me/details', [DetailsController::class, 'update']);
|
||||
Route::patch('me/details/auth', [AuthDetailsController::class, 'update']);
|
||||
Route::post('me/avatar', [ProfileAvatarController::class, 'update']);
|
||||
Route::delete('me/avatar', [ProfileAvatarController::class, 'destroy']);
|
||||
Route::put('me/avatar/external', [ProfileAvatarController::class, 'updateExternal']);
|
||||
Route::get('me/sessions', [ProfileSessionsController::class, 'index']);
|
||||
|
||||
Route::group(['middleware' => 'two-factor'], function () {
|
||||
Route::put('me/2fa', [ProfileTwoFactorController::class, 'update']);
|
||||
Route::post('me/2fa/verify', [ProfileTwoFactorController::class, 'verify']);
|
||||
Route::delete('me/2fa', [ProfileTwoFactorController::class, 'destroy']);
|
||||
});
|
||||
|
||||
Route::get('stats', [StatsController::class, 'index']);
|
||||
|
||||
Route::apiResource('users', UsersController::class)->except('show');
|
||||
Route::get('users/{userId}', [UsersController::class, 'show']);
|
||||
|
||||
Route::post('users/{user}/avatar', [UsersAvatarController::class, 'update']);
|
||||
Route::put('users/{user}/avatar/external', [UsersAvatarController::class, 'updateExternal']);
|
||||
Route::delete('users/{user}/avatar', [UsersAvatarController::class, 'destroy']);
|
||||
|
||||
Route::group(['middleware' => 'two-factor'], function () {
|
||||
Route::put('users/{user}/2fa', [UsersTwoFactorController::class, 'update']);
|
||||
Route::post('users/{user}/2fa/verify', [UsersTwoFactorController::class, 'verify']);
|
||||
Route::delete('users/{user}/2fa', [UsersTwoFactorController::class, 'destroy']);
|
||||
});
|
||||
|
||||
Route::get('users/{user}/sessions', [UsersSessionsController::class, 'index']);
|
||||
|
||||
Route::get('/sessions/{session}', [SessionsController::class, 'show']);
|
||||
Route::delete('/sessions/{session}', [SessionsController::class, 'destroy']);
|
||||
|
||||
Route::apiResource('roles', RolesController::class)->except('show');
|
||||
Route::get('/roles/{roleId}', [RolesController::class, 'show']);
|
||||
|
||||
Route::get('roles/{role}/permissions', [RolePermissionsController::class, 'show']);
|
||||
Route::put('roles/{role}/permissions', [RolePermissionsController::class, 'update']);
|
||||
|
||||
Route::apiResource('permissions', PermissionsController::class);
|
||||
|
||||
Route::get('/settings', [SettingsController::class, 'index']);
|
||||
|
||||
Route::get('/countries', [CountriesController::class, 'index']);
|
||||
});
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Broadcast Channels
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may register all of the event broadcasting channels that your
|
||||
| application supports. The given channel authorization callbacks are
|
||||
| used to check if an authenticated user can listen to the channel.
|
||||
|
|
||||
*/
|
||||
|
||||
Broadcast::channel('App.User.{id}', function ($user, $id) {
|
||||
return (int) $user->id === (int) $id;
|
||||
});
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Foundation\Inspiring;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Console Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This file is where you may define all of your Closure based console
|
||||
| commands. Each Closure is bound to a command instance allowing a
|
||||
| simple approach to interacting with each command's IO methods.
|
||||
|
|
||||
*/
|
||||
|
||||
Artisan::command('inspire', function () {
|
||||
$this->comment(Inspiring::quote());
|
||||
})->describe('Display an inspiring quote');
|
||||
+244
@@ -0,0 +1,244 @@
|
||||
<?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');
|
||||
});
|
||||
Reference in New Issue
Block a user