Rotas e Proteção
Como definir rotas públicas e protegidas no seu módulo.
Arquivo de rotas
As rotas são definidas em Routes/web.php. O framework injeta a variável $router automaticamente:
<?php
use Src\Modules\Task\Controllers\TaskController;
use Src\Kernel\Middlewares\AuthHybridMiddleware;
use Src\Kernel\Middlewares\AdminOnlyMiddleware;
/** @var \Src\Kernel\Contracts\RouterInterface $router */
// Middlewares reutilizáveis
$auth = [AuthHybridMiddleware::class];
$admin = [AuthHybridMiddleware::class, AdminOnlyMiddleware::class];
// Rotas de leitura (autenticado)
$router->get('/api/task', [TaskController::class, 'listar'], $auth);
$router->get('/api/task/{id}', [TaskController::class, 'buscar'], $auth);
// Rotas de escrita (autenticado)
$router->post('/api/task', [TaskController::class, 'criar'], $auth);
$router->put('/api/task/{id}', [TaskController::class, 'atualizar'], $auth);
// Rota de exclusão (apenas admin)
$router->delete('/api/task/{id}', [TaskController::class, 'deletar'], $admin);
Tipos de proteção
| Middleware | Quem acessa | Uso |
|---|---|---|
AuthHybridMiddleware | Qualquer usuário autenticado | Rotas de leitura e escrita |
AdminOnlyMiddleware | Apenas admin_system | Rotas administrativas |
RateLimitMiddleware | Todos (com limite) | Proteção contra abuso |
| Sem middleware | Qualquer pessoa | Rotas públicas (cuidado!) |
Rotas de escrita sem proteção
O analisador de código da IDE detecta rotas POST/PUT/DELETE sem middleware e emite um aviso. Sempre proteja rotas que modificam dados.
Middleware próprio do módulo
Você pode criar middlewares específicos para o seu módulo em Middlewares/:
<?php
namespace Src\Modules\Task\Middlewares;
use Src\Kernel\Contracts\MiddlewareInterface;
use Src\Kernel\Http\Request\Request;
use Src\Kernel\Http\Response\Response;
final class TaskMiddleware implements MiddlewareInterface
{
public function handle(Request $request, callable $next): Response
{
// Lógica antes da requisição
$response = $next($request);
// Lógica depois da requisição
return $response;
}
}