Exception: Otto::Security::AuthorizationError
- Inherits:
-
ForbiddenError
- Object
- StandardError
- HTTPError
- ForbiddenError
- Otto::Security::AuthorizationError
- Defined in:
- lib/otto/security/authorization_error.rb
Overview
Authorization error for resource-level access control failures
This exception is designed to be raised from Logic classes when a user attempts to access a resource they don’t have permission to access.
Otto automatically registers this as a 403 Forbidden error during initialization, so raising this exception will return a 403 response instead of a 500 error.
Two-Layer Authorization Pattern:
-
Layer 1 (Route-level): RouteAuthWrapper checks authentication/basic roles
-
Layer 2 (Resource-level): Logic classes raise AuthorizationError for ownership/permissions
Instance Attribute Summary collapse
-
#action ⇒ Object
readonly
Optional additional context for logging/debugging.
-
#resource ⇒ Object
readonly
Optional additional context for logging/debugging.
-
#user_id ⇒ Object
readonly
Optional additional context for logging/debugging.
Instance Method Summary collapse
-
#initialize(message = 'Access denied', resource: nil, action: nil, user_id: nil) ⇒ AuthorizationError
constructor
Initialize authorization error with optional context.
-
#to_log_data ⇒ Hash
Generate structured log data for authorization failures.
Methods inherited from ForbiddenError
default_log_level, default_status
Methods inherited from HTTPError
default_log_level, default_status
Constructor Details
#initialize(message = 'Access denied', resource: nil, action: nil, user_id: nil) ⇒ AuthorizationError
Initialize authorization error with optional context
53 54 55 56 57 58 |
# File 'lib/otto/security/authorization_error.rb', line 53 def initialize( = 'Access denied', resource: nil, action: nil, user_id: nil) super() @resource = resource @action = action @user_id = user_id end |
Instance Attribute Details
#action ⇒ Object (readonly)
Optional additional context for logging/debugging
45 46 47 |
# File 'lib/otto/security/authorization_error.rb', line 45 def action @action end |
#resource ⇒ Object (readonly)
Optional additional context for logging/debugging
45 46 47 |
# File 'lib/otto/security/authorization_error.rb', line 45 def resource @resource end |
#user_id ⇒ Object (readonly)
Optional additional context for logging/debugging
45 46 47 |
# File 'lib/otto/security/authorization_error.rb', line 45 def user_id @user_id end |
Instance Method Details
#to_log_data ⇒ Hash
Generate structured log data for authorization failures
63 64 65 66 67 68 69 70 |
# File 'lib/otto/security/authorization_error.rb', line 63 def to_log_data { error: , resource: resource, action: action, user_id: user_id, }.compact end |