Class: Otto::Security::PermissionStrategy
- Inherits:
-
AuthStrategy
- Object
- AuthStrategy
- Otto::Security::PermissionStrategy
- Defined in:
- lib/otto/security/authentication.rb
Overview
Permission-based authentication strategy
Instance Method Summary collapse
- #authenticate(env, requirement) ⇒ Object
-
#initialize(required_permissions, session_key: 'user_permissions') ⇒ PermissionStrategy
constructor
A new instance of PermissionStrategy.
- #user_context(env) ⇒ Object
Constructor Details
#initialize(required_permissions, session_key: 'user_permissions') ⇒ PermissionStrategy
Returns a new instance of PermissionStrategy.
171 172 173 174 |
# File 'lib/otto/security/authentication.rb', line 171 def initialize(, session_key: 'user_permissions') @required_permissions = Array() @session_key = session_key end |
Instance Method Details
#authenticate(env, requirement) ⇒ Object
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'lib/otto/security/authentication.rb', line 176 def authenticate(env, requirement) session = env['rack.session'] return failure('No session available') unless session = session[@session_key] || [] = Array() # Extract permission from requirement (e.g., "permission:write" -> "write") = requirement.split(':', 2).last if .include?() success(user_permissions: , required_permission: ) else failure("Insufficient privileges - requires permission: #{}") end end |
#user_context(env) ⇒ Object
193 194 195 196 197 198 199 |
# File 'lib/otto/security/authentication.rb', line 193 def user_context(env) session = env['rack.session'] return {} unless session = session[@session_key] || [] { user_permissions: Array() } end |