feat: añadir paquete pkg/acl para control de acceso puro
Nuevo paquete puro (sin I/O) que implementa RBAC basado en roles.
Incluye: ACL, Role, RoleDef, FromMap constructor, CanDo para verificar
permisos, RoleFor para resolver rol de un usuario, y soporte para
wildcards tanto en usuarios ("*") como en acciones ("command:*").
Incluye tests completos cubriendo: ACL vacío, admin wildcard, acciones
específicas, prefix wildcards, prioridad exacto>wildcard, y múltiples
roles por usuario.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
package acl
|
||||
|
||||
// RoleDef is the input shape for building an ACL — matches config.RoleCfg.
|
||||
type RoleDef struct {
|
||||
Users []string
|
||||
Actions []string
|
||||
}
|
||||
|
||||
// FromMap builds an ACL from a map of role name → RoleDef.
|
||||
// This is the primary constructor used from the runtime.
|
||||
func FromMap(roles map[string]RoleDef) ACL {
|
||||
var rs []Role
|
||||
for name, def := range roles {
|
||||
rs = append(rs, Role{
|
||||
Name: name,
|
||||
Users: def.Users,
|
||||
Actions: def.Actions,
|
||||
})
|
||||
}
|
||||
return ACL{roles: rs}
|
||||
}
|
||||
Reference in New Issue
Block a user