Sha256: 83ac4b006974736598e6bd802f8df62f2557fba02a60a87ba4d26a059ebb5061

Contents?: true

Size: 954 Bytes

Versions: 2

Compression:

Stored size: 954 Bytes

Contents

module Janus
  module Strategies
    extend ActiveSupport::Concern

    # Runs authentication strategies to log a user in.
    def run_strategies(scope)
      Janus::Manager.strategies.each { |name| break if run_strategy(name, scope) }
    end

    # Runs a given strategy and returns true if it succeeded.
    def run_strategy(name, scope)
      strategy = "Janus::Strategies::#{name.to_s.camelize}".constantize.new(scope, self)
      
      if strategy.valid?
        strategy.authenticate!
        
        if strategy.success?
          send(strategy.auth_method, strategy.user, :scope => scope)
          Janus::Manager.run_callbacks(:authenticate, strategy.user, self, :scope => scope)
        end
      end
      
      strategy.success?
    end

    module ClassMethods
      # Returns the list of strategies as underscore symbols.
      def strategies
        @strategies ||= [:rememberable, :remote_authenticatable]
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
janus-0.6.0 lib/janus/strategies.rb
janus-0.5.0 lib/janus/strategies.rb