Class: RailsIam::Authorization::RoleChecker

Inherits:
RailsIamService show all
Defined in:
app/services/rails_iam/authorization/role_checker.rb

Instance Method Summary collapse

Methods inherited from RailsIamService

call

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(context) ⇒ RoleChecker

Returns a new instance of RoleChecker.



6
7
8
9
# File 'app/services/rails_iam/authorization/role_checker.rb', line 6

def initialize(context)
  super()
  @context = context
end

Instance Method Details

#callObject



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

def call
  return true if @context.required_roles.empty?

  success =
    case @context.role_match
    when :any
      (@context.roles.to_a & @context.required_roles).any?

    when :all
      (@context.required_roles - @context.roles.to_a).empty?

    else
      raise ArgumentError, "Unknown role_match #{@context.role_match}"
    end

  return true if success

  raise RailsIam::Authorization::Exceptions::MissingRoleError.new(
    required: @context.required_roles,
    actual: @context.roles,
  )
end