Module: Ez::Permissions::API::Permissions

Included in:
Ez::Permissions::API
Defined in:
lib/ez/permissions/api/permissions.rb

Constant Summary collapse

PermissionNotFound =
Class.new(StandardError)

Instance Method Summary collapse

Instance Method Details

#get_permission!(action, resource) ⇒ Object



9
10
11
12
13
# File 'lib/ez/permissions/api/permissions.rb', line 9

def get_permission!(action, resource)
  Ez::Permissions::Permission.find_by!(resource: resource, action: action)
rescue ActiveRecord::RecordNotFound
  raise PermissionNotFound, "Permission [#{action} -> #{resource}] not found"
end

#grant_permission(role_name, action, resource) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/ez/permissions/api/permissions.rb', line 15

def grant_permission(role_name, action, resource)
  role = Ez::Permissions::API.get_role!(role_name)

  if action == :all
    grant_all_permissions(role, resource)
  else
    permission = get_permission!(action, resource)
    grant_single_permission(role, permission)
  end
end

#revoke_permission(role_name, action, resource) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/ez/permissions/api/permissions.rb', line 26

def revoke_permission(role_name, action, resource)
  role = Ez::Permissions::API.get_role!(role_name)
  permission = get_permission!(action, resource)

  Ez::Permissions::PermissionRole.find_by(
    role:       role,
    permission: permission
  )&.delete
end