Class: Passpartu::Verify

Inherits:
Object
  • Object
show all
Defined in:
lib/passpartu/verify.rb

Direct Known Subclasses

BlockVerify

Constant Summary collapse

CRUD_KEY =
'crud'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(role, keys, only, except, skip, block) ⇒ Verify

Returns a new instance of Verify.



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/passpartu/verify.rb', line 9

def initialize(role, keys, only, except, skip, block)
  exclusion = except || skip # alias

  @role = role.to_s
  @keys = keys.map(&:to_s)
  @only = Array(only).map(&:to_s) if present?(only)
  @except = Array(exclusion).map(&:to_s) if present?(exclusion) && !@only
  @block = block

  raise PolicyYmlNotFoundError if Passpartu.policy.nil?
end

Instance Attribute Details

#blockObject (readonly)

Returns the value of attribute block.



7
8
9
# File 'lib/passpartu/verify.rb', line 7

def block
  @block
end

#exceptObject (readonly)

Returns the value of attribute except.



7
8
9
# File 'lib/passpartu/verify.rb', line 7

def except
  @except
end

#keysObject (readonly)

Returns the value of attribute keys.



7
8
9
# File 'lib/passpartu/verify.rb', line 7

def keys
  @keys
end

#onlyObject (readonly)

Returns the value of attribute only.



7
8
9
# File 'lib/passpartu/verify.rb', line 7

def only
  @only
end

#resultObject (readonly)

Returns the value of attribute result.



7
8
9
# File 'lib/passpartu/verify.rb', line 7

def result
  @result
end

#roleObject (readonly)

Returns the value of attribute role.



7
8
9
# File 'lib/passpartu/verify.rb', line 7

def role
  @role
end

Class Method Details

.call(role, keys, only: nil, except: nil, skip: nil, &block) ⇒ Object



21
22
23
# File 'lib/passpartu/verify.rb', line 21

def self.call(role, keys, only: nil, except: nil, skip: nil, &block)
  new(role, keys, only, except, skip, block).call
end

Instance Method Details

#callObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/passpartu/verify.rb', line 25

def call
  return false if role_ignore?

  default_check
  check_crud_if

  validate_result
rescue StandardError => e
  if ['TrueClass does not have #dig method', 'FalseClass does not have #dig method'].include?(e.message)
    raise WaterfallError,
          "Looks like you want to use check_waterfall feature, but it's set to 'false'. Otherwise check your #{Passpartu.config.policy_file} for validness"
  else
    raise e
  end
end