Module: Rbacan::RolesAndPermissions

Defined in:
lib/rbacan/roles_and_permissions.rb

Class Method Summary collapse

Class Method Details

.assign_permissions_to_role(role_name, permissions) ⇒ Object

Assigns a list of permissions to a role. Idempotent — skips duplicates.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/rbacan/roles_and_permissions.rb', line 23

def self.assign_permissions_to_role(role_name, permissions)
  Rbacan.ensure_legacy_mode!(:assign_permissions_to_role)

  chosen_role = Rbacan.role_class.constantize.find_by(Rbacan.role_key => role_name.to_s)
  return unless chosen_role

  permissions.each do |permission|
    given_permission = Rbacan.permission_class.constantize.find_by(
      Rbacan.permission_key => permission.to_s
    )
    next unless given_permission

    Rbacan.role_permission_class.constantize.find_or_create_by(
      role_id:       chosen_role.id,
      permission_id: given_permission.id
    )
  end
end

.create_permissions(permissions) ⇒ Object

Creates permissions by name. Idempotent — skips existing ones.



14
15
16
17
18
19
20
# File 'lib/rbacan/roles_and_permissions.rb', line 14

def self.create_permissions(permissions)
  Rbacan.ensure_legacy_mode!(:create_permissions)

  permissions.each do |permission|
    Rbacan.permission_class.constantize.find_or_create_by(Rbacan.permission_key => permission.to_s)
  end
end

.create_roles(roles) ⇒ Object

Creates roles by name. Idempotent — skips existing ones.



5
6
7
8
9
10
11
# File 'lib/rbacan/roles_and_permissions.rb', line 5

def self.create_roles(roles)
  Rbacan.ensure_legacy_mode!(:create_roles)

  roles.each do |role|
    Rbacan.role_class.constantize.find_or_create_by(Rbacan.role_key => role.to_s)
  end
end