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