Files
KanbanGit/routes/web/projects.php
T
Twyco ff796aa10a
linter / quality (pull_request) Successful in 1m28s
tests / ci (8.4) (pull_request) Successful in 1m47s
feat: overhaul project workspace navigation
2026-07-18 17:52:25 +02:00

61 lines
2.7 KiB
PHP

<?php
use App\Http\Controllers\ProjectBoardController;
use App\Http\Controllers\ProjectController;
use App\Http\Controllers\ProjectSettingsController;
use App\Http\Controllers\ProjectTemplateController;
use Illuminate\Support\Facades\Route;
Route::prefix('projects')->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';
});
});
});
});