feat: rbac_check (pure), jwt_middleware, rbac_middleware

Fase 5 del issue 0010 — RBAC y middlewares de auth.
- rbac_check es pura: solo recorre la matriz roles/permisos
- jwt_middleware extrae token del header Authorization: Bearer, valida e
  inyecta claims en el context con una key privada (jwtCtxKey struct{})
- rbac_middleware requiere jwt_middleware antes; lee role de claims.Custom
- Helper JWTClaimsFromContext para acceder a las claims desde handlers
- 401 claro si RBAC se usa sin JWT antes (code: no_claims)
This commit is contained in:
2026-04-18 17:44:04 +02:00
parent 4601af88b5
commit f46fde3656
9 changed files with 489 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
package infra
// RBACCheck verifica si un rol tiene un permiso concreto.
// Busca el rol por Name en la slice de roles; si existe itera sus permisos
// y retorna true si alguno hace match exacto de Resource + Action.
// Funcion pura — evaluacion de datos en memoria, sin I/O.
func RBACCheck(roles []Role, roleName string, perm Permission) bool {
for _, r := range roles {
if r.Name != roleName {
continue
}
for _, p := range r.Permissions {
if p.Resource == perm.Resource && p.Action == perm.Action {
return true
}
}
return false
}
return false
}