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:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user