Class: AccessContext::Role

Inherits:
Object
  • Object
show all
Defined in:
lib/access_context/role.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, permission_names) ⇒ Role

Returns a new instance of Role.



34
35
36
37
# File 'lib/access_context/role.rb', line 34

def initialize(name, permission_names)
  @name = name
  @permission_names = ([permission_names] || []).flatten.map(&:to_sym).uniq
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



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

def name
  @name
end

#permission_namesObject (readonly)

Returns the value of attribute permission_names.



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

def permission_names
  @permission_names
end

Class Method Details

.[](role) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/access_context/role.rb', line 15

def [](role)
  if role.is_a?(Role)
    role
  else
    roles[role.to_sym]
  end
end

.allObject



23
24
25
# File 'lib/access_context/role.rb', line 23

def all
  roles
end

.grant(role_name, permission_names) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/access_context/role.rb', line 5

def grant(role_name, permission_names)
  name = role_name.to_sym
  role = roles[name]
  if role
    role.add_permissions(permission_names)
  else
    roles[name] = new(name, permission_names)
  end
end

.rolesObject



27
28
29
# File 'lib/access_context/role.rb', line 27

def roles
  @roles ||= {}
end

Instance Method Details

#add_permissions(names) ⇒ Object



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

def add_permissions(names)
  symbolized_names = ([names] || []).flatten.map(&:to_sym)
  @permission_names = (@permission_names + symbolized_names).uniq
end

#permissionsObject



44
45
46
47
48
# File 'lib/access_context/role.rb', line 44

def permissions
  @permissions ||= permission_names.map do |permission_name|
    AccessContext::Permission.all[permission_name]
  end.compact
end