Sha256: fe2aac04a45fcb8d3e3f69dbc819b2547b85e635c4dbe4d8e9da5fd936a2726b

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

require File.dirname(__FILE__) + '/support_lite'
load File.dirname(__FILE__) + '/markup_plugin/output_helpers.rb'
Dir[File.dirname(__FILE__) + '/warden_plugin/**/*.rb'].each {|file| load file }

module SinatraMore
  module WardenPlugin
    def self.registered(app)
      raise "WardenPlugin::Error - Install with 'sudo gem install warden' or require 'warden' in your app." unless Warden::Manager
      app.use Warden::Manager do |manager|
        manager.default_strategies :password
        manager.failure_app = app
      end
      app.helpers SinatraMore::OutputHelpers
      app.helpers SinatraMore::WardenHelpers

      # TODO Improve serializing methods
      Warden::Manager.serialize_into_session{ |user| user.nil? ? nil : user.id }
      Warden::Manager.serialize_from_session{ |id|   id.nil? ? nil : User.find(id) }

      Warden::Strategies.add(:password) do
        def valid?
          username || password
        end

        def authenticate!
          u = User.authenticate(username, password)
          u.nil? ? fail!("Could not log in") : success!(u)
        end
        
        def username
          params['username'] || params['nickname'] || params['login'] || params['email']
        end
        
        def password
          params['password'] || params['pass']
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sinatra_more-0.2.4 lib/sinatra_more/warden_plugin.rb