Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'rubygems'
- require 'sinatra'
- require 'sinatra_warden'
- require 'warden'
- require 'rack/flash'
- require 'haml'
- User = Struct.new(:id, :name, :email)
- Warden::Strategies.add(:password) do
- def valid?
- p "Validating..."
- p params
- params['username'] && params['password']
- end
- def authenticate!
- p "Authenticating..."
- p params
- r = params["username"] == 'test' && params["password"] == 'testing'
- u = User.new(1, "Peter Parker", "pparker@phrei.org")
- r ? success!(u) : fail!("Couldn't log in")
- end
- end
- module Test
- class App < Sinatra::Base
- use Rack::Session::Cookie
- use Warden::Manager do |m|
- m.default_strategies :password
- m.failure_app = Test::App
- m.serialize_into_session { |u| u.id }
- m.serialize_from_session do |id|
- User.new(id, "Peter Parker", "pparker@phrei.org")
- end
- end # Warden::Manager
- use Rack::Flash
- register Sinatra::Warden
- set :sessions, true
- set :auth_failure_path, '/fail'
- set :auth_success_path, '/'
- get '/?' do
- authorize!('/login')
- return <<-RESULT
- #{flash[:success]}
- We're in #{user.name}! your id is #{user.id}.
- <a href="/logout">Click Here</a> to logout.
- <pre>Your params where: #{params.inspect}</pre>.
- RESULT
- end
- get '/fail' do
- "Sorry, you didn't get in."
- flash[:error]
- end
- end
- def self.app
- Test::App
- end
- end
Add Comment
Please, Sign In to add comment