rock
56f8e8b391
feat(rbac): hierarchical access control with fine-grained scopes
Implements comprehensive RBAC system:
Core Types (types.rs):
- Role: named set of AccessRules
- AccessRule: (resources, verbs, scope) tuple
- AccessScope: project/visibility/owner/group constraints
- ResourceMeta: document metadata for access checks
- Verb: read/write/delete/query
- Visibility: public/private per document
Role Provider (role_provider.rs):
- RoleProvider trait for pluggable backends
- YamlRoleProvider: load from YAML files
- InMemoryRoleProvider: for testing
- CompositeRoleProvider: layered lookup
- Built-in roles: admin, portfolio-agent, authenticated-user
Scope Checker (scope_checker.rs):
- ScopeChecker trait + composite pattern
- ProjectScopeChecker: allowed projects list
- VisibilityScopeChecker: public/private matching
- OwnerScopeChecker: self/any/specific user
- GroupScopeChecker: required group membership
Access Guard (access_guard.rs):
- Unified API for HTTP + retrieval layers
- check_http_capability(): memory:read/write checks
- filter_resources(): document-level filtering
- Audit logging for all decisions
Tests: 77 unit + 25 integration, all passing
Migration note: AuthorizedPipeline retained for compatibility,
will be replaced by AccessGuard integration in next phase.
2026-08-31 23:22:11 -07:00
..
2026-08-30 20:42:55 -07:00
2026-08-31 23:22:11 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-30 20:42:55 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-31 22:42:34 -07:00
2026-08-31 22:48:42 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-31 23:22:11 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00
2026-08-28 15:33:59 -07:00