386e4d3dcb
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>
22 lines
487 B
Go
22 lines
487 B
Go
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}
|
|
}
|