Class: YouShallNotPass::Authorizator

Inherits:
Object
  • Object
show all
Defined in:
lib/you_shall_not_pass/authorizator.rb

Instance Method Summary collapse

Constructor Details

#initialize(**attrs) ⇒ Authorizator

Returns a new instance of Authorizator.



6
7
8
9
10
# File 'lib/you_shall_not_pass/authorizator.rb', line 6

def initialize(**attrs)
  attrs.each do |attr, value|
    send attr, value
  end
end

Instance Method Details

#can?(permission, **args) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
15
16
# File 'lib/you_shall_not_pass/authorizator.rb', line 12

def can?(permission, **args)
  Array(policies.fetch(permission)).all? do |policy|
    Callable(policy).call(**args) == true
  end
end

#can_all?(*permissions, **args) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/you_shall_not_pass/authorizator.rb', line 18

def can_all?(*permissions, **args)
  permissions.all? { |permission| can?(permission, **args)}
end

#can_any?(*permissions, **args) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/you_shall_not_pass/authorizator.rb', line 22

def can_any?(*permissions, **args)
  permissions.any? { |permission| can?(permission, **args)}
end

#perform_if(permission, **args) ⇒ Object



26
27
28
# File 'lib/you_shall_not_pass/authorizator.rb', line 26

def perform_if(permission, **args)
  yield if can?(permission, **args)
end

#perform_if_all(*permissions, **args) ⇒ Object



34
35
36
# File 'lib/you_shall_not_pass/authorizator.rb', line 34

def perform_if_all(*permissions, **args)
  yield if can_all?(*permissions, **args)
end

#perform_if_any(*permissions, **args) ⇒ Object



42
43
44
# File 'lib/you_shall_not_pass/authorizator.rb', line 42

def perform_if_any(*permissions, **args)
  yield if can_any?(*permissions, **args)
end

#perform_unless(permission, **args) ⇒ Object



30
31
32
# File 'lib/you_shall_not_pass/authorizator.rb', line 30

def perform_unless(permission, **args)
  yield unless can?(permission, **args)
end

#perform_unless_all(*permissions, **args) ⇒ Object



38
39
40
# File 'lib/you_shall_not_pass/authorizator.rb', line 38

def perform_unless_all(*permissions, **args)
  yield unless can_all?(*permissions, **args)
end

#perform_unless_any(*permissions, **args) ⇒ Object



46
47
48
# File 'lib/you_shall_not_pass/authorizator.rb', line 46

def perform_unless_any(*permissions, **args)
  yield unless can_any?(*permissions, **args)
end

#policiesObject



50
51
52
# File 'lib/you_shall_not_pass/authorizator.rb', line 50

def policies
  @policies ||= __set_policies__
end