name('home'); Route::middleware('guest')->group(function () { Route::get('/login', [AuthController::class, 'showLogin'])->name('login'); Route::post('/login', [AuthController::class, 'login']) ->middleware('throttle:10,1') ->name('login.attempt'); }); Route::post('/logout', [AuthController::class, 'logout']) ->middleware('auth') ->name('logout'); Route::middleware('auth')->group(function () { // Bowler charts Route::get('/my-bowler', [BowlerChartController::class, 'personal'])->name('charts.personal'); Route::get('/charts', [BowlerChartController::class, 'index'])->name('charts.index'); Route::get('/charts/create', [BowlerChartController::class, 'create'])->name('charts.create'); Route::post('/charts', [BowlerChartController::class, 'store'])->name('charts.store'); Route::get('/charts/{chart}', [BowlerChartController::class, 'show'])->name('charts.show'); Route::get('/charts/{chart}/edit', [BowlerChartController::class, 'edit'])->name('charts.edit'); Route::put('/charts/{chart}', [BowlerChartController::class, 'update'])->name('charts.update'); Route::delete('/charts/{chart}', [BowlerChartController::class, 'destroy'])->name('charts.destroy'); // KPIs Route::get('/kpis', [KpiController::class, 'index'])->name('kpis.index'); Route::get('/kpis/create', [KpiController::class, 'create'])->name('kpis.create'); Route::post('/kpis', [KpiController::class, 'store'])->name('kpis.store'); Route::get('/kpis/{kpi}/edit', [KpiController::class, 'edit'])->name('kpis.edit'); Route::put('/kpis/{kpi}', [KpiController::class, 'update'])->name('kpis.update'); Route::delete('/kpis/{kpi}', [KpiController::class, 'destroy'])->name('kpis.destroy'); // KPI entries (shallow) Route::get('/kpis/{kpi}/entries', [KpiEntryController::class, 'index'])->name('kpis.entries.index'); Route::post('/kpis/{kpi}/entries', [KpiEntryController::class, 'store'])->name('kpis.entries.store'); Route::get('/kpi-entries/{entry}/edit', [KpiEntryController::class, 'edit'])->name('kpi-entries.edit'); Route::put('/kpi-entries/{entry}', [KpiEntryController::class, 'update'])->name('kpi-entries.update'); Route::delete('/kpi-entries/{entry}', [KpiEntryController::class, 'destroy'])->name('kpi-entries.destroy'); // Projects Route::get('/projects', [ProjectController::class, 'index'])->name('projects.index'); Route::get('/projects/create', [ProjectController::class, 'create'])->name('projects.create'); Route::post('/projects', [ProjectController::class, 'store'])->name('projects.store'); Route::get('/projects/{project}/edit', [ProjectController::class, 'edit'])->name('projects.edit'); Route::put('/projects/{project}', [ProjectController::class, 'update'])->name('projects.update'); Route::delete('/projects/{project}', [ProjectController::class, 'destroy'])->name('projects.destroy'); // Project entries (shallow) Route::get('/projects/{project}/entries', [ProjectEntryController::class, 'index'])->name('projects.entries.index'); Route::post('/projects/{project}/entries', [ProjectEntryController::class, 'store'])->name('projects.entries.store'); Route::get('/project-entries/{entry}/edit', [ProjectEntryController::class, 'edit'])->name('project-entries.edit'); Route::put('/project-entries/{entry}', [ProjectEntryController::class, 'update'])->name('project-entries.update'); Route::delete('/project-entries/{entry}', [ProjectEntryController::class, 'destroy'])->name('project-entries.destroy'); // Teams & Categories (per-user lists) Route::get('/teams', [TeamController::class, 'index'])->name('teams.index'); Route::post('/teams', [TeamController::class, 'store'])->name('teams.store'); Route::get('/teams/{team}/edit', [TeamController::class, 'edit'])->name('teams.edit'); Route::put('/teams/{team}', [TeamController::class, 'update'])->name('teams.update'); Route::delete('/teams/{team}', [TeamController::class, 'destroy'])->name('teams.destroy'); Route::get('/categories', [CategoryController::class, 'index'])->name('categories.index'); Route::post('/categories', [CategoryController::class, 'store'])->name('categories.store'); Route::get('/categories/{category}/edit', [CategoryController::class, 'edit'])->name('categories.edit'); Route::put('/categories/{category}', [CategoryController::class, 'update'])->name('categories.update'); Route::delete('/categories/{category}', [CategoryController::class, 'destroy'])->name('categories.destroy'); // Profile Route::get('/profile/password', [ProfileController::class, 'editPassword'])->name('profile.password.edit'); Route::put('/profile/password', [ProfileController::class, 'updatePassword'])->name('profile.password.update'); // API keys Route::get('/api-keys', [ApiKeyController::class, 'index'])->name('api-keys.index'); Route::post('/api-keys', [ApiKeyController::class, 'store'])->name('api-keys.store'); Route::post('/api-keys/{tokenId}/view', [ApiKeyController::class, 'show'])->name('api-keys.show'); Route::delete('/api-keys/{tokenId}', [ApiKeyController::class, 'destroy'])->name('api-keys.destroy'); // Swagger / API documentation Route::view('/api/docs', 'api-docs')->name('api.docs'); }); Route::middleware(['auth', 'admin'])->prefix('admin')->name('admin.')->group(function () { Route::get('/users', [UserAdminController::class, 'index'])->name('users.index'); Route::get('/users/create', [UserAdminController::class, 'create'])->name('users.create'); Route::post('/users', [UserAdminController::class, 'store'])->name('users.store'); Route::get('/users/{user}/edit', [UserAdminController::class, 'edit'])->name('users.edit'); Route::put('/users/{user}', [UserAdminController::class, 'update'])->name('users.update'); Route::get('/users/{user}/password', [UserAdminController::class, 'editPassword'])->name('users.password.edit'); Route::put('/users/{user}/password', [UserAdminController::class, 'updatePassword'])->name('users.password.update'); Route::post('/users/{user}/toggle-active', [UserAdminController::class, 'toggleActive'])->name('users.toggle'); Route::get('/groups', [GroupAdminController::class, 'index'])->name('groups.index'); Route::get('/groups/create', [GroupAdminController::class, 'create'])->name('groups.create'); Route::post('/groups', [GroupAdminController::class, 'store'])->name('groups.store'); Route::get('/groups/{group}/edit', [GroupAdminController::class, 'edit'])->name('groups.edit'); Route::put('/groups/{group}', [GroupAdminController::class, 'update'])->name('groups.update'); Route::delete('/groups/{group}', [GroupAdminController::class, 'destroy'])->name('groups.destroy'); Route::get('/groups/{group}/members', [GroupAdminController::class, 'members'])->name('groups.members'); Route::post('/groups/{group}/members', [GroupAdminController::class, 'addMember'])->name('groups.members.add'); Route::put('/groups/{group}/members/{user}/role', [GroupAdminController::class, 'updateMemberRole'])->name('groups.members.role'); Route::delete('/groups/{group}/members/{user}', [GroupAdminController::class, 'removeMember'])->name('groups.members.remove'); Route::get('/theme', [ThemeController::class, 'edit'])->name('theme.edit'); Route::put('/theme', [ThemeController::class, 'update'])->name('theme.update'); Route::post('/theme/reset', [ThemeController::class, 'reset'])->name('theme.reset'); Route::get('/theme/export', [ThemeController::class, 'export'])->name('theme.export'); Route::post('/theme/import', [ThemeController::class, 'import'])->name('theme.import'); });