Class: RackJwtAegis::RbacManager
- Inherits:
-
Object
- Object
- RackJwtAegis::RbacManager
- Includes:
- DebugLogger
- Defined in:
- lib/rack_jwt_aegis/rbac_manager.rb
Overview
Role-Based Access Control (RBAC) manager
Handles authorization by checking user permissions against cached RBAC data. Supports both simple boolean permissions and complex permission structures. Uses a two-tier caching system for performance optimization.
Instance Method Summary collapse
-
#authorize(request, payload) ⇒ Object
Authorize a request against RBAC permissions.
-
#initialize(config) ⇒ RbacManager
constructor
Initialize the RBAC manager.
Methods included from DebugLogger
Constructor Details
#initialize(config) ⇒ RbacManager
Initialize the RBAC manager
23 24 25 26 |
# File 'lib/rack_jwt_aegis/rbac_manager.rb', line 23 def initialize(config) @config = config setup_cache_adapters end |
Instance Method Details
#authorize(request, payload) ⇒ Object
Authorize a request against RBAC permissions
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/rack_jwt_aegis/rbac_manager.rb', line 33 def (request, payload) user_id = payload[@config.payload_key(:user_id).to_s] raise AuthorizationError, 'User ID missing from JWT payload' if user_id.nil? # Build permission key = (user_id, request) return if () == true # Permission not cached or cache miss - check RBAC store = (user_id, request) # Cache the result if middleware has write access (, ) return if raise AuthorizationError, 'Access denied - insufficient permissions' end |