acls-rs
Access control primitives for Rust — permission sets, role-based access control (RBAC), and temporal permissions with time-based validity windows.
What it does
- Permission sets with union, intersection, and difference — composition order does not affect the result
- Grant/deny pairs — explicit denials compose correctly with grants
- RBAC — role hierarchies with inheritance and cycle detection
- Temporal permissions — validity windows that expire automatically
- Subjects — represent users or entities with group memberships
- PermissionMapping — configurable bitmask-to-permission translation for bridging domain-specific access control models
- Optional serde support (enable the
serdefeature)
Quick start
use *;
// Define permissions with namespace:action pairs
let viewer_perms = from;
let editor_perms = from;
// Build roles with grant/denial pairs
let mut rbac = new;
rbac.add_role;
rbac.add_role;
// Resolve effective permissions
let roles = vec!;
let perms = rbac.resolve_permissions.unwrap;
let effective = perms.effective_permissions;
assert!;
assert!;
Documentation
Full API reference and design guide: https://akamu.dev/bac-rules/
License
Licensed under either of Apache License 2.0 or MIT license, at your option.