module RoleCall::Roles::Permissions

Public Instance Methods

ensure_valid_permissions(permission_grants) click to toggle source
# File lib/role_call/roles/permissions.rb, line 41
def ensure_valid_permissions(permission_grants)
  raise ArgumentError, "a permission is required" if permission_grants.empty?

  invalid_permissions = permission_grants.reject { |permission| permission.respond_to?(:granted_to) }
  raise ArgumentError, "invalid permissions: #{invalid_permissions.join(", ")}" if invalid_permissions.present?
end
grant(*permission_grants) click to toggle source
# File lib/role_call/roles/permissions.rb, line 26
def grant(*permission_grants)
  permission_grants = permission_grants.flatten.compact

  ensure_valid_permissions(permission_grants)

  permission_grants.each do |permission|
    permissions << permission
    track_permission(permission)
  end
end
inherited(base) click to toggle source
Calls superclass method
# File lib/role_call/roles/permissions.rb, line 19
def inherited(base)
  base.permissions = permissions.dup
  super
end
track_permission(permission) click to toggle source
# File lib/role_call/roles/permissions.rb, line 37
def track_permission(permission)
  permission.granted_to(self)
end
unpermitted?() click to toggle source
# File lib/role_call/roles/permissions.rb, line 15
def unpermitted?
  permissions.blank?
end