Exception: RailsIam::Authorization::Exceptions::MissingRoleError

Inherits:
AuthorizationError
  • Object
show all
Includes:
ConfigLoader
Defined in:
app/services/rails_iam/authorization/exceptions/missing_role_error.rb

Instance Method Summary collapse

Methods included from ConfigLoader

#authentication_strategies, #authorization_rule_error, #cookie_options, #jwt_algorithm, #jwt_audience, #jwt_expiry, #jwt_issuer, #jwt_secret_key, #refresh_token_transport, #session_strategy, #user_class

Constructor Details

#initialize(required:, actual:) ⇒ MissingRoleError

Returns a new instance of MissingRoleError.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/services/rails_iam/authorization/exceptions/missing_role_error.rb', line 9

def initialize(required:, actual:)
  formatter = missing_role_error

  message = case formatter
            # 1. If the user configured a plain String, use it directly
            when String
              formatter
            # 2. If it's a Proc/Lambda, inspect its argument requirements
            when Proc
              if formatter.arity.zero?
                # The user defined a lambda with no parameters: e.g., -> { "Access Denied" }
                formatter.call
              else
                # The user defined a parameterized lambda: e.g., ->(required:, actual:) { ... }
                formatter.call(required: required, actual: actual)
              end
            # 3. Fallback safeguard if config is empty or invalid type
            else
              "Required role: #{required.join(', ')}, actual: #{actual.join(', ')}"
            end

  super(message)
end