88 lines
5.6 KiB
PHP
88 lines
5.6 KiB
PHP
<?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;
|
|
use App\Http\Controllers\ProjectTicketController;
|
|
use App\Http\Controllers\ProjectTicketMetadataSettingsController;
|
|
use App\Http\Controllers\TeamController;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Laravel\Fortify\Features;
|
|
|
|
Route::inertia('/', 'Welcome', [
|
|
'canRegister' => Features::enabled(Features::registration()),
|
|
])->name('home');
|
|
|
|
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/{project}/access', [ProjectController::class, 'access'])
|
|
->name('projects.access');
|
|
Route::patch('projects/{project}/permissions/users/{user}', [ProjectController::class, 'updateUserPermissions'])
|
|
->name('projects.permissions.users.update');
|
|
Route::patch('projects/{project}/permissions/teams/{team}', [ProjectController::class, 'updateTeamPermissions'])
|
|
->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'])
|
|
->name('projects.board.index');
|
|
Route::get('projects/{project}/tickets/{ticket}', [ProjectTicketController::class, 'show'])
|
|
->name('projects.tickets.show');
|
|
Route::patch('projects/{project}/tickets/{ticket}', [ProjectTicketController::class, 'update'])
|
|
->name('projects.tickets.update');
|
|
Route::patch('projects/{project}/tickets/{ticket}/status', [ProjectBoardController::class, 'move'])
|
|
->name('projects.tickets.status.update');
|
|
Route::get('projects/{project}/settings/board', [ProjectBoardSettingsController::class, 'show'])
|
|
->name('projects.settings.board');
|
|
Route::post('projects/{project}/settings/board/columns', [ProjectBoardSettingsController::class, 'store'])
|
|
->name('projects.settings.board.columns.store');
|
|
Route::patch('projects/{project}/settings/board/columns/{boardColumn}', [ProjectBoardSettingsController::class, 'update'])
|
|
->name('projects.settings.board.columns.update');
|
|
Route::delete('projects/{project}/settings/board/columns/{boardColumn}', [ProjectBoardSettingsController::class, 'destroy'])
|
|
->name('projects.settings.board.columns.destroy');
|
|
Route::get('projects/{project}/settings/metadata', [ProjectTicketMetadataSettingsController::class, 'show'])
|
|
->name('projects.settings.metadata');
|
|
Route::post('projects/{project}/settings/metadata/types', [ProjectTicketMetadataSettingsController::class, 'storeType'])
|
|
->name('projects.settings.metadata.types.store');
|
|
Route::patch('projects/{project}/settings/metadata/types/{ticketType}', [ProjectTicketMetadataSettingsController::class, 'updateType'])
|
|
->name('projects.settings.metadata.types.update');
|
|
Route::delete('projects/{project}/settings/metadata/types/{ticketType}', [ProjectTicketMetadataSettingsController::class, 'destroyType'])
|
|
->name('projects.settings.metadata.types.destroy');
|
|
Route::post('projects/{project}/settings/metadata/priorities', [ProjectTicketMetadataSettingsController::class, 'storePriority'])
|
|
->name('projects.settings.metadata.priorities.store');
|
|
Route::patch('projects/{project}/settings/metadata/priorities/{ticketPriority}', [ProjectTicketMetadataSettingsController::class, 'updatePriority'])
|
|
->name('projects.settings.metadata.priorities.update');
|
|
Route::delete('projects/{project}/settings/metadata/priorities/{ticketPriority}', [ProjectTicketMetadataSettingsController::class, 'destroyPriority'])
|
|
->name('projects.settings.metadata.priorities.destroy');
|
|
Route::post('projects/{project}/settings/metadata/fields', [ProjectTicketMetadataSettingsController::class, 'storeFieldDefinition'])
|
|
->name('projects.settings.metadata.fields.store');
|
|
Route::patch('projects/{project}/settings/metadata/fields/{ticketFieldDefinition}', [ProjectTicketMetadataSettingsController::class, 'updateFieldDefinition'])
|
|
->name('projects.settings.metadata.fields.update');
|
|
Route::delete('projects/{project}/settings/metadata/fields/{ticketFieldDefinition}', [ProjectTicketMetadataSettingsController::class, 'destroyFieldDefinition'])
|
|
->name('projects.settings.metadata.fields.destroy');
|
|
});
|
|
});
|
|
|
|
Route::middleware(['auth', 'verified', 'can:access-admin'])
|
|
->prefix('admin')
|
|
->name('admin.')
|
|
->group(function () {
|
|
Route::get('users', [UserManagementController::class, 'index'])->name('users.index');
|
|
Route::patch('users/{user}/admin-status', [UserManagementController::class, 'update'])->name('users.update');
|
|
|
|
Route::get('teams', [TeamController::class, 'index'])->name('teams.index');
|
|
Route::post('teams', [TeamController::class, 'store'])->name('teams.store');
|
|
Route::patch('teams/{team}/members', [TeamController::class, 'updateMembers'])->name('teams.members.update');
|
|
});
|
|
|
|
require __DIR__.'/settings.php';
|