Files
egutierrez af2366acb5 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)
2026-04-18 17:44:04 +02:00

21 lines
576 B
Go

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
}