# DH Inspección V2 — Fase A3 ## Versión ```text v0.3.0 · Fase A3 · Guards y autorización ``` ## Alcance A3 agrega autorización declarativa y reutilizable al backend: ```ts @RequirePermissions('users.create') ``` `PermissionsGuard` se registra globalmente después de `AccessTokenGuard`. Los permisos se resuelven desde las relaciones `user_roles` y `role_permissions` en cada request autenticado, por lo que los cambios futuros de A4 no dependen de regenerar el access token. Reglas: - endpoint sin sesión: `401 UNAUTHORIZED`; - sesión válida sin todos los permisos requeridos: `403 FORBIDDEN`; - sesión con todos los permisos requeridos: acceso permitido; - permisos de controller y handler se acumulan; - endpoints marcados con `@Public()` no requieren permisos; - el frontend podrá ocultar acciones, pero la autorización definitiva siempre queda en el backend. ## Migraciones A3 no modifica el esquema y no incluye migraciones. Utiliza la matriz de roles y permisos creada en A1. ## Exclusiones - endpoints administrativos de usuarios y roles: A4; - consultas administrativas de auditoría: A5; - login y panel web autenticado: A6.