Sha256: 6a6f82b8906f70efc067929b1c5edb403eadbf6f4c7e81fa3df5f6af87d6e3ea

Contents?: true

Size: 1007 Bytes

Versions: 4

Compression:

Stored size: 1007 Bytes

Contents

class ApplicationController < Sinatra::Base
  # Configure Warden for authentication
  enable :sessions

  use Warden::Manager do |config|
    config.serialize_into_session{|user| user.id}
    config.serialize_from_session{|id| User.find(id)}
    config.scope_defaults :default, strategies: [:password], action: 'auth/invalid'
    config.failure_app = self
  end

  Warden::Manager.before_failure {|env,opts| env['REQUEST_METHOD'] = 'POST'}
  Warden::Strategies.add(:password) do
    def valid?
      params['user'] && params['user']['username'] && params['user']['password']
    end
    def authenticate!
      unless (user = User.find_by_username params['user']['username'])
        fail! 'The username you entered does not exist'
      else
        user.authenticate(params['user']['password']) ? success!(user) : fail!('Could not log in')
      end
    end
  end

  helpers do
    def current_user
      env['warden'].user
    end

    def authenticate
      env['warden'].authenticate!
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
eucalypt-0.1.3 lib/eucalypt/eucalypt-security/namespaces/security-warden/templates/warden.tt
eucalypt-0.1.2 lib/eucalypt/eucalypt-security/namespaces/security-warden/templates/warden.tt
eucalypt-0.1.1 lib/eucalypt/eucalypt-security/namespaces/security-warden/templates/warden.tt
eucalypt-0.1.0 lib/eucalypt/eucalypt-security/namespaces/security-warden/templates/warden.tt