Class: Kankri::PrivilegeChecker

Inherits:
Object
  • Object
show all
Defined in:
lib/kankri/privilege_check.rb

Overview

A method object for checking privileges

A PrivilegeChecker takes the target privilege key and required privilege, as well as the hash mapping privilege keys to their

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(target, requisite, privileges) ⇒ PrivilegeChecker

Creates a PrivilegeChecker

Examples:

Initialise a passing privilege check.

PrivilegeChecker.new(:foo, :bar, foo: [:bar])

Initialise a failing privilege check.

PrivilegeChecker.new(:foo, :bar, foo: [])

Parameters:

  • target (Symbol)

    The privilege key that is the target of this privilege check.

  • requisite (Symbol)

    The privilege required under the privilege key.

  • privileges (Hash)

    A hash mapping privilege keys to their privilege lists.



21
22
23
24
25
# File 'lib/kankri/privilege_check.rb', line 21

def initialize(target, requisite, privileges)
  @target = target
  @requisite = requisite
  @privileges = privileges
end

Class Method Details

.check(*args) ⇒ Boolean

Creates and runs a privilege checker

Examples:

Do a passing privilege check.

PrivilegeChecker.check(:foo, :bar, foo: [:bar])
#=> true

Do a failing privilege check.

PrivilegeChecker.check(:foo, :bar, foo: [])
#=> false

Parameters:

  • target (Symbol)

    The privilege key that is the target of this privilege check.

  • requisite (Symbol)

    The privilege required under the privilege key.

  • privileges (Hash)

    A hash mapping privilege keys to their privilege lists.

Returns:

  • (Boolean)

    True if the privilege is held by the privilege set for the target; false otherwise.



57
58
59
# File 'lib/kankri/privilege_check.rb', line 57

def self.check(*args)
  new(*args).valid?
end

Instance Method Details

#valid?Boolean

Runs the privilege checker and checks the privilege

Examples:

Runs a passing privilege checker.

checker.run
#=> true

Runs a failing privilege checker.

checker.run
#=> false

Returns:

  • (Boolean)

    True if the privilege is held by the privilege set for the target; false otherwise.



39
40
41
# File 'lib/kankri/privilege_check.rb', line 39

def valid?
  target_in_privileges? && has_privilege?
end