fixed missing features

This commit is contained in:
2026-04-15 09:56:53 +02:00
parent de461ad73a
commit cec0e397b6
44 changed files with 1102 additions and 561 deletions
+58 -8
View File
@@ -1,7 +1,6 @@
<?php
use App\Http\Controllers\Admin\UserManagementController;
use App\Http\Controllers\ProjectBacklogController;
use App\Http\Controllers\ProjectBoardController;
use App\Http\Controllers\ProjectBoardSettingsController;
use App\Http\Controllers\ProjectController;
@@ -21,96 +20,147 @@ Route::inertia('/', 'Welcome', [
Route::middleware(['auth', 'verified'])->group(function () {
Route::inertia('dashboard', 'Dashboard')->name('dashboard');
Route::resource('projects', ProjectController::class)
->only(['index', 'create', 'store', 'show']);
Route::get('projects', [ProjectController::class, 'index'])
->name('projects.index');
Route::get('projects/create', [ProjectController::class, 'create'])
->middleware('can:create-project')
->name('projects.create');
Route::post('projects', [ProjectController::class, 'store'])
->middleware('can:create-project')
->name('projects.store');
Route::get('projects/{project}', [ProjectController::class, 'show'])
->middleware('can:view-project,project')
->name('projects.show');
Route::delete('projects/{project}', [ProjectController::class, 'destroy'])
->middleware('can:access-admin')
->name('projects.destroy');
Route::get('projects/{project}/access', [ProjectController::class, 'access'])
->middleware('can:admin-project,project')
->name('projects.access');
Route::patch('projects/{project}/permissions/users/{user}', [ProjectController::class, 'updateUserPermissions'])
->middleware('can:admin-project,project')
->name('projects.permissions.users.update');
Route::patch('projects/{project}/permissions/teams/{team}', [ProjectController::class, 'updateTeamPermissions'])
->middleware('can:admin-project,project')
->name('projects.permissions.teams.update');
Route::get('projects/{project}/backlog', [ProjectBacklogController::class, 'index'])
->name('projects.backlog.index');
Route::post('projects/{project}/backlog', [ProjectBacklogController::class, 'store'])
->name('projects.backlog.store');
Route::scopeBindings()->group(function (): void {
Route::get('projects/{project}/board', [ProjectBoardController::class, 'index'])
->middleware('can:view-project,project')
->name('projects.board.index');
Route::get('projects/{project}/backlog', [ProjectController::class, 'backlog'])
->middleware('can:view-project,project')
->name('projects.backlog.index');
Route::get('projects/{project}/tickets/create', [ProjectTicketController::class, 'create'])
->middleware('can:write-project,project')
->name('projects.tickets.create');
Route::post('projects/{project}/tickets', [ProjectTicketController::class, 'store'])
->middleware('can:write-project,project')
->name('projects.tickets.store');
Route::get('projects/{project}/tickets/{ticket}', [ProjectTicketController::class, 'show'])
->middleware('can:view-project,project')
->name('projects.tickets.show');
Route::patch('projects/{project}/tickets/{ticket}', [ProjectTicketController::class, 'update'])
->middleware('can:write-project,project')
->name('projects.tickets.update');
Route::get('projects/{project}/tickets/{ticket}/branches/validate', [ProjectTicketBranchController::class, 'validate'])
->middleware('can:write-project,project')
->name('projects.tickets.branches.validate');
Route::post('projects/{project}/tickets/{ticket}/branches', [ProjectTicketBranchController::class, 'store'])
->middleware('can:write-project,project')
->name('projects.tickets.branches.store');
Route::post('projects/{project}/tickets/{ticket}/links', [ProjectTicketLinkController::class, 'store'])
->middleware('can:write-project,project')
->name('projects.tickets.links.store');
Route::delete('projects/{project}/tickets/{ticket}/links/{ticketLink}', [ProjectTicketLinkController::class, 'destroy'])
->middleware('can:write-project,project')
->withoutScopedBindings()
->name('projects.tickets.links.destroy');
Route::patch('projects/{project}/tickets/{ticket}/status', [ProjectBoardController::class, 'move'])
->middleware('can:write-project,project')
->name('projects.tickets.status.update');
Route::get('projects/{project}/settings/general', [ProjectController::class, 'general'])
->middleware('can:access-admin')
->middleware('can:admin-project,project')
->name('projects.settings.general');
Route::get('projects/{project}/settings/board', [ProjectBoardSettingsController::class, 'show'])
->middleware('can:admin-project,project')
->name('projects.settings.board');
Route::post('projects/{project}/settings/board/columns', [ProjectBoardSettingsController::class, 'store'])
->middleware('can:admin-project,project')
->name('projects.settings.board.columns.store');
Route::patch('projects/{project}/settings/board/columns/{boardColumn}', [ProjectBoardSettingsController::class, 'update'])
->middleware('can:admin-project,project')
->name('projects.settings.board.columns.update');
Route::delete('projects/{project}/settings/board/columns/{boardColumn}', [ProjectBoardSettingsController::class, 'destroy'])
->middleware('can:admin-project,project')
->name('projects.settings.board.columns.destroy');
Route::post('projects/{project}/settings/board/statuses', [ProjectBoardSettingsController::class, 'storeStatus'])
->middleware('can:admin-project,project')
->name('projects.settings.board.statuses.store');
Route::patch('projects/{project}/settings/board/statuses/{ticketStatus}', [ProjectBoardSettingsController::class, 'updateStatus'])
->middleware('can:admin-project,project')
->name('projects.settings.board.statuses.update');
Route::delete('projects/{project}/settings/board/statuses/{ticketStatus}', [ProjectBoardSettingsController::class, 'destroyStatus'])
->middleware('can:admin-project,project')
->name('projects.settings.board.statuses.destroy');
Route::patch('projects/{project}/settings/board/statuses/{ticketStatus}/transitions', [ProjectBoardSettingsController::class, 'updateStatusTransitions'])
->middleware('can:admin-project,project')
->name('projects.settings.board.statuses.transitions.update');
Route::get('projects/{project}/settings/metadata', [ProjectTicketMetadataSettingsController::class, 'show'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata');
Route::get('projects/{project}/settings/repositories', [ProjectRepositorySettingsController::class, 'show'])
->middleware('can:admin-project,project')
->name('projects.settings.repositories');
Route::post('projects/{project}/settings/repositories', [ProjectRepositorySettingsController::class, 'store'])
->middleware('can:admin-project,project')
->name('projects.settings.repositories.store');
Route::patch('projects/{project}/settings/repositories/{repositoryConnection}', [ProjectRepositorySettingsController::class, 'update'])
->middleware('can:admin-project,project')
->name('projects.settings.repositories.update');
Route::delete('projects/{project}/settings/repositories/{repositoryConnection}', [ProjectRepositorySettingsController::class, 'destroy'])
->middleware('can:admin-project,project')
->name('projects.settings.repositories.destroy');
Route::post('projects/{project}/settings/metadata/types', [ProjectTicketMetadataSettingsController::class, 'storeType'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.types.store');
Route::patch('projects/{project}/settings/metadata/types/{ticketType}', [ProjectTicketMetadataSettingsController::class, 'updateType'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.types.update');
Route::patch('projects/{project}/settings/metadata', [ProjectTicketMetadataSettingsController::class, 'update'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.update');
Route::delete('projects/{project}/settings/metadata/types/{ticketType}', [ProjectTicketMetadataSettingsController::class, 'destroyType'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.types.destroy');
Route::post('projects/{project}/settings/metadata/priorities', [ProjectTicketMetadataSettingsController::class, 'storePriority'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.priorities.store');
Route::patch('projects/{project}/settings/metadata/priorities/{ticketPriority}', [ProjectTicketMetadataSettingsController::class, 'updatePriority'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.priorities.update');
Route::delete('projects/{project}/settings/metadata/priorities/{ticketPriority}', [ProjectTicketMetadataSettingsController::class, 'destroyPriority'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.priorities.destroy');
Route::post('projects/{project}/settings/metadata/fields', [ProjectTicketMetadataSettingsController::class, 'storeFieldDefinition'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.fields.store');
Route::patch('projects/{project}/settings/metadata/fields/{ticketFieldDefinition}', [ProjectTicketMetadataSettingsController::class, 'updateFieldDefinition'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.fields.update');
Route::delete('projects/{project}/settings/metadata/fields/{ticketFieldDefinition}', [ProjectTicketMetadataSettingsController::class, 'destroyFieldDefinition'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.fields.destroy');
Route::post('projects/{project}/settings/metadata/link-types', [ProjectTicketMetadataSettingsController::class, 'storeLinkType'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.link-types.store');
Route::patch('projects/{project}/settings/metadata/link-types/{ticketLinkType}', [ProjectTicketMetadataSettingsController::class, 'updateLinkType'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.link-types.update');
Route::delete('projects/{project}/settings/metadata/link-types/{ticketLinkType}', [ProjectTicketMetadataSettingsController::class, 'destroyLinkType'])
->middleware('can:admin-project,project')
->name('projects.settings.metadata.link-types.destroy');
});