name('projects.')->group(function (): void { Route::get('/', [ProjectController::class, 'index'])->name('index'); Route::middleware('can:create-project')->group(function (): void { Route::get('create', [ProjectController::class, 'create'])->name('create'); Route::post('/', [ProjectController::class, 'store'])->name('store'); }); Route::prefix('{project}') ->group(function (): void { Route::middleware('can:view-project,project')->group(function (): void { Route::get('/', [ProjectController::class, 'show'])->name('show'); Route::get('board', [ProjectBoardController::class, 'index'])->name('board.index'); Route::get('backlog', [ProjectController::class, 'backlog'])->name('backlog.index'); Route::middleware('can:create-project')->group(function (): void { Route::get('templates/create', [ProjectTemplateController::class, 'create'])->name('templates.create'); Route::post('templates', [ProjectTemplateController::class, 'store'])->name('templates.store'); }); }); Route::delete('/', [ProjectController::class, 'destroy']) ->middleware('can:access-admin') ->name('destroy'); Route::middleware('can:admin-project,project')->group(function (): void { Route::get('access', [ProjectSettingsController::class, 'access'])->name('access'); Route::prefix('permissions')->name('permissions.')->group(function (): void { Route::patch('users/{user}', [ProjectController::class, 'updateUserPermissions']) ->name('users.update'); Route::patch('teams/{team}', [ProjectController::class, 'updateTeamPermissions']) ->name('teams.update'); }); }); Route::scopeBindings()->group(function (): void { Route::prefix('tickets') ->name('tickets.') ->group(function (): void { require __DIR__.'/project/tickets.php'; }); Route::prefix('settings') ->name('settings.') ->middleware('can:admin-project,project') ->group(function (): void { require __DIR__.'/project/settings.php'; }); }); }); });