Class: AccessContext

Inherits:
Object
  • Object
show all
Defined in:
lib/access_context.rb,
lib/access_context/role.rb,
lib/access_context/version.rb,
lib/access_context/permission.rb,
lib/access_context/configuration.rb

Defined Under Namespace

Modules: Configuration Classes: Error, Permission, Role

Constant Summary collapse

VERSION =
"1.1.0"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type, name, target = nil) ⇒ AccessContext

Returns a new instance of AccessContext.



41
42
43
44
45
# File 'lib/access_context.rb', line 41

def initialize(type, name, target=nil)
  @type = type.to_sym
  @name = name.to_sym
  @target = target&.to_sym
end

Instance Attribute Details

#name ⇒ Object (readonly)

Returns the value of attribute name.



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

def name
  @name
end

#target ⇒ Object (readonly)

Returns the value of attribute target.



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

def target
  @target
end

#type ⇒ Object (readonly)

Returns the value of attribute type.



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

def type
  @type
end

Class Method Details

.config(&block) ⇒ Object



17
18
19
# File 'lib/access_context.rb', line 17

def config(&block)
  Configuration.module_eval(&block)
end

.controller(name, target) ⇒ Object



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

def controller(name, target)
  AccessContext.new(:controller, name, target)
end

.job(name, target) ⇒ Object



33
34
35
# File 'lib/access_context.rb', line 33

def job(name, target)
  AccessContext.new(:job, name, target)
end

.service(name, target) ⇒ Object



25
26
27
# File 'lib/access_context.rb', line 25

def service(name, target)
  AccessContext.new(:service, name, target)
end

.view(name, target) ⇒ Object



29
30
31
# File 'lib/access_context.rb', line 29

def view(name, target)
  AccessContext.new(:view, name, target)
end

Instance Method Details

#contains?(context) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
60
61
62
63
64
# File 'lib/access_context.rb', line 57

def contains?(context)
  type == context.type &&
  name == context.name &&
  (
    target == context.target ||
    target.blank?
  )
end

#permit?(user) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/access_context.rb', line 47

def permit?(user)
  permit_role?(user.role)
end

#permit_role?(role) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
54
55
# File 'lib/access_context.rb', line 51

def permit_role?(role)
  AccessContext::Role[role].permissions.any? do |permission|
    permission.permit?(self)
  end
end