class PasswordRequired::ControllerConcern::ArgumentsComposer

Constants

VALID_KEYS

Public Class Methods

new(opts = {}) click to toggle source
# File lib/password_required/controller_concern/arguments_composer.rb, line 6
def initialize(opts = {})
  @options = opts.slice(*VALID_KEYS)
  @options[:for] = Array(@options[:for])
end

Public Instance Methods

call(klass) click to toggle source
# File lib/password_required/controller_concern/arguments_composer.rb, line 11
def call(klass)
  @options.each_pair do |key, value|
    send("handle_#{key}_key", klass, value, @options[:for])
  end
end

Private Instance Methods

handle_for_key(klass, value, _) click to toggle source
# File lib/password_required/controller_concern/arguments_composer.rb, line 30
def handle_for_key(klass, value, _)
  klass.send :before_action, :guard_with_password!, only: value
end
handle_with_key(klass, value, actions) click to toggle source
# File lib/password_required/controller_concern/arguments_composer.rb, line 19
def handle_with_key(klass, value, actions)
  actions.each do |action|
    klass.password_check_methods[action] =
      if value.is_a? Proc
        value
      elsif value.is_a? Symbol
        ->(_) { send(value) }
      end
  end
end