class Rampart::StrategyManager

Public Class Methods

new(env) click to toggle source
# File lib/rampart/strategy_manager.rb, line 6
def initialize(env)
  @env = env
  @strategies = {}
end

Public Instance Methods

authenticate!(*names) click to toggle source
# File lib/rampart/strategy_manager.rb, line 16
def authenticate!(*names)
  winning_event = FailEvent.new
  request = Request.new(@env)
  names.each do |name|
    strategy = fetch(name)
    next unless strategy.valid?(request)
    event = strategy.authenticate!(request)
    if event.halt?
      winning_event = event
      break
    end
  end
  winning_event
end
register(name, strategy) click to toggle source
# File lib/rampart/strategy_manager.rb, line 11
def register(name, strategy)
  raise(ArgumentError, "strategy name already registered: '#{name}'") if @strategies.key?(name)
  @strategies[name] = strategy
end

Private Instance Methods

fetch(name) click to toggle source
# File lib/rampart/strategy_manager.rb, line 33
def fetch(name)
  raise(ArgumentError, "Strategy not registered: '#{name}'") unless @strategies.key?(name)
  @strategies[name]
end