Skip to Content Skip to Search
Namespace
Methods
A
E
P
Included Modules

Instance Public methods

authorization_required()

Override this method if authorization is required for each action

# File app/controllers/concerns/authorizeable.rb, line 57
def authorization_required
  false
end

authorize!(resource, action = nil)

# File app/controllers/concerns/authorizeable.rb, line 24
def authorize!(resource, action = nil)
  raise AuthorizationError unless resource

  @authorization_performed = true
  return if authorized?(resource, action)

  raise NotAuthorizedError, permission(resource).error_message(action)
end

authorized?(resource, action = nil)

# File app/controllers/concerns/authorizeable.rb, line 33
def authorized?(resource, action = nil)
  action ||= "#{action_name}?"

  permission(resource).send(action)
end

ensure_authorization_performed!()

# File app/controllers/concerns/authorizeable.rb, line 43
def ensure_authorization_performed!
  return if @authorization_performed

  raise AuthorizationNotPerformedError,
    "No authorization was performed for #{self.class}##{action_name}"
end

permission(resource)

# File app/controllers/concerns/authorizeable.rb, line 39
def permission(resource)
  permission_klass(resource).new(current_member, resource)
end

permission_klass(object)

# File app/controllers/concerns/authorizeable.rb, line 50
def permission_klass(object)
  object_name = object.model_name.element
  scope = self.class.name.split("::").first
  "#{scope}::#{object_name.camelize}Permission".safe_constantize
end