Class: RailsIam::Authorization::PermissionChecker

Inherits:
RailsIamService show all
Defined in:
app/services/rails_iam/authorization/permission_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) ⇒ PermissionChecker

Returns a new instance of PermissionChecker.



6
7
8
9
# File 'app/services/rails_iam/authorization/permission_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
33
34
35
# File 'app/services/rails_iam/authorization/permission_checker.rb', line 11

def call
  return true if permissions.empty?

  success =
    case @context.permission_match
    when :any
      permissions.any? do |permission|
        @context.resolved_permissions.include?(permission)
      end

    when :all
      permissions.all? do |permission|
        @context.resolved_permissions.include?(permission)
      end

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

  return true if success

  raise RailsIam::Authorization::Exceptions::MissingPermissionError.new(
    required: permissions,
  )
end

#permissionsObject



37
38
39
# File 'app/services/rails_iam/authorization/permission_checker.rb', line 37

def permissions
  @context.permissions_for_check
end