group(function () { /* Rota protegida por middleware JwtMiddleware - Só os utilizadores autenticados podem aceder a esta rota */ Route::patch('/profile/{id}', [UserController::class, 'update']); Route::get('/profile/{id}', [UserController::class, 'getUser']); Route::get('/videos', [VideosController::class, 'index']); Route::get('/video/{id}', [VideosController::class, 'getVideo']); Route::get('/categories', [CategoryController::class, 'index']); Route::get('/workshops', [WorkshopsController::class, 'index']); Route::get('/workshop/{id}', [WorkshopsController::class, 'getWorkshop']); Route::post('/categories', [CategoryController::class, 'create']); Route::post('/inscrever/{id}', [WorkshopsController::class, 'inscrever']); Route::delete('/cancelar-inscricao/{id}', [WorkshopsController::class, 'cancelarInscricao']); /* Para fazer a verificação do role_id no frontend das páginas do admin */ Route::get('/me', [AuthController::class, 'me']); /* Rota protegida por middleware AdminMiddleware - Só os administradores podem aceder as estas rotas */ Route::middleware('admin')->group(function () { Route::get('/users', [UserController::class, 'index']); Route::post('/create-user', [UserController::class, 'create']); Route::get('/get-user/{id}', [UserController::class, 'getUser']); Route::patch('/edit-user/{id}', [UserController::class, 'update']); Route::delete('/edit-user/{id}', [UserController::class, 'destroy']); Route::post('/create-video', [VideosController::class, 'create']); Route::get('/edit-video/{id}', [VideosController::class, 'getVideo']); Route::patch('/edit-video/{id}', [VideosController::class, 'update']); Route::delete('/video/{id}', [VideosController::class, 'destroy']); Route::post('/create-workshop', [WorkshopsController::class, 'create']); Route::get('/edit-workshop/{id}', [WorkshopsController::class, 'getWorkshop']); Route::delete('/edit-workshop/{id}', [WorkshopsController::class, 'destroy']); Route::post('/edit-workshop/{id}', [WorkshopsController::class, 'update']); /* Depois de protergermos as rotas com middleware, criamos o layout para o admin em pages/privateadmin/_layout.tsx */ }); });