Backend
Permissões
Como a autorização por permissão e papel (role) funciona no backend.
@RequiresPermission
Endpoints são protegidos anotando o método do controller:
@RequiresPermission("candidate:delete")
@Delete("/{id}/trash")
public HttpResponse<Void> softDeleteCandidateById(@PathVariable UUID id) { ... }A anotação é interceptada via AOP (PermissionInterceptor) e valida se o usuário autenticado possui a
permissão informada, no formato <recurso>:<ação> (ex: client:read, vacancy:delete, user:update).
Papéis (roles)
Além de permissões granulares, existe o conceito de role (ex: ADMIN), usado principalmente no frontend
para esconder/mostrar seções inteiras do menu (ver Sidebar no frontend).
Token
O token JWT emitido no login carrega permissions: string[] e roles: string[], decodificados no frontend
para controlar o que é exibido na UI — mas a validação real de autorização acontece sempre no backend via
@RequiresPermission.