module Ez::Permissions::API::Permissions

Constants

PermissionNotFound

Public Instance Methods

get_permission!(action, resource) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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

Private Instance Methods

grant_all_permissions(role, resource) click to toggle source
# File lib/ez/permissions/api/permissions.rb, line 45
def grant_all_permissions(role, resource)
  Ez::Permissions::DSL.resource(resource).actions.each do |action|
    permission = get_permission!(action, resource)
    grant_single_permission(role, permission)
  end
end
grant_single_permission(role, permission) click to toggle source
# File lib/ez/permissions/api/permissions.rb, line 38
def grant_single_permission(role, permission)
  Ez::Permissions::PermissionRole.find_or_create_by!(
    role: role,
    permission: permission
  )
end