module Croods::Resource::Authorization

Public Instance Methods

apply_authorization_roles!() click to toggle source
# File lib/croods/resource/authorization.rb, line 18
def apply_authorization_roles!
  authorization_roles.each do |authorization|
    (actions + additional_actions).each do |action|
      on = authorization[:on]
      roles = authorization[:roles]

      next if on && !on.include?(action.name)

      action.roles = roles
    end
  end
end
authorization_roles() click to toggle source
# File lib/croods/resource/authorization.rb, line 14
def authorization_roles
  @authorization_roles ||= []
end
authorize(*roles, on: nil) click to toggle source
# File lib/croods/resource/authorization.rb, line 6
def authorize(*roles, on: nil)
  return if roles.empty?

  on = [on] if on&.is_a?(Symbol)

  authorization_roles << { roles: roles, on: on }
end
public_action(*names)
Alias for: public_actions
public_actions(*names) click to toggle source
# File lib/croods/resource/authorization.rb, line 31
def public_actions(*names)
  return unless names

  names = [names] if names&.is_a?(Symbol)

  extend_controller do
    skip_before_action :authenticate_user!, only: names
  end

  actions.each do |action|
    next unless names.include?(action.name)

    action.public = true
  end
end
Also aliased as: public_action
user_is_not_the_owner!() click to toggle source
# File lib/croods/resource/authorization.rb, line 49
def user_is_not_the_owner!
  @user_is_the_owner = false
end
user_is_the_owner?() click to toggle source
# File lib/croods/resource/authorization.rb, line 53
def user_is_the_owner?
  return @user_is_the_owner unless @user_is_the_owner.nil?

  @user_is_the_owner = true
end