name('bo.')->group(function () { Route::prefix('/bo')->group(function () { // Auth routes. Route::namespace('\App\Http\Controllers\Bo')->middleware(['throttle:credentials'])->group(function () { Auth::routes([ 'confirm' => false, 'login' => true, 'logout' => true, 'register' => false, 'reset' => false, 'verify' => false ]); }); // No tenant routes. Route::middleware(['auth:backend', 'restrict_tenant_access'])->group(function () { // * HOME Route::get('/', [DashboardController::class, 'index'])->name('dashboard'); // * TENANTS Route::resource('tenants', TenantController::class); Route::get('/tenants/{tenant}/duplicate', [TenantController::class, 'duplicate']) ->name('tenants.duplicate'); // * USERS Route::resource('users', UserController::class); Route::get('/users/{user}/duplicate', [UserController::class, 'duplicate']) ->name('users.duplicate'); }); }); // Tenant routes. Route::middleware([ 'restrict_tenant_access', InitializeTenancyByPath::class ])->prefix('{tenant}/bo')->group(function () { Route::middleware(['auth:backend'])->group(function () { // * CONTACTS Route::resource('contacts', ContactController::class)->only(['index', 'show']); // * APP_USERS Route::resource('app_users', AppUserController::class)->except('show'); Route::get('/app_users/{app_user}/duplicate', [AppUserController::class, 'duplicate']) ->name('app_users.duplicate'); Route::post('/app_users/import', [AppUserController::class, 'import'])->name('app_users.import'); Route::patch('/app_users/change-order/{app_user}/{direction}', [AppUserController::class, 'changeOrder']) ->where('direction', 'up|down') ->name('app_users.change-order'); // * DIRECTORIES Route::resource('directories', DirectoriesController::class)->except('show'); Route::post('/directories/save-order/{directories}', [DirectoriesController::class, 'saveOrder']) ->name('directories.save-order'); Route::post('/directories/need-authorization/{id}', [DirectoriesController::class, 'needAuthorization']) ->name('directories.need-authorization'); // * DOCUMENTS Route::resource('documents', DocumentController::class)->except('show'); Route::post('/documents/{document}/change-published', [DocumentController::class, 'changePublished']) ->name('documents.change-published'); Route::post('/documents/upload', [DocumentController::class, 'upload'])->name('documents.upload'); Route::patch('/documents/change-order/{document}/{direction}', [DocumentController::class, 'changeOrder']) ->where('direction', 'up|down') ->name('documents.change-order'); // * TAGS Route::resource('tags', TagController::class)->except('show'); Route::get('/tags/{tag}/duplicate', [TagController::class, 'duplicate']) ->name('tags.duplicate'); Route::patch('/tags/change-order/{tag}/{direction}', [TagController::class, 'changeOrder']) ->where('direction', 'up|down') ->name('tags.change-order'); // * SETTINGS Route::resource('settings', SettingController::class)->except('show'); // * FORMULARIES Route::resource('formularies', FormularyController::class)->except('show'); Route::get('/formularies/{formulary}/duplicate', [FormularyController::class, 'duplicate']) ->name('formularies.duplicate'); Route::patch('/formularies/change-order/{formulary}/{direction}', [ FormularyController::class, 'changeOrder' ])->where('direction', 'up|down') ->name('formularies.change-order'); }); }); }); // Public files download. Route::get('/{tenant}/docs/{uuid}/download', [DocumentController::class, 'download']) ->name('docs.download') ->middleware('signed:relative');