Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'rubygems'
- gem 'sinatra-sinatra'
- require 'sinatra'
- require 'warden'
- require 'haml'
- class User
- def self.authenticate(username, password)
- return username if username == "hassox" && password == "sekrit"
- end
- end
- Warden::Manager.serialize_into_session{ |user| user }
- Warden::Manager.serialize_from_session{ |user| user }
- Warden::Strategies.add(:password) do
- def valid?
- params['username'] || params['password']
- end
- def authenticate!
- u = User.authenticate(params['username'], params['password'])
- u.nil? ? fail!("Could not log in") : success!(u)
- end
- end
- class WardenHandler < Sinatra::Default
- configure do
- use Rack::Session::Cookie
- use Warden::Manager do |manager|
- manager.default_strategies :password
- manager.failure_app = WardenHandler
- end
- end
- handler = lambda do
- # flash[:notice] = "That username and password are not correct!"
- status 401
- haml :login_form
- end
- get '/unauthenticated/?', &handler
- post '/unauthenticated/?', &handler
- put'/unauthenticated/?', &handler
- delete '/unauthenticated/?', &handler
- get "/dashboard" do
- env["warden"].authenticate!
- "YAY YOU'RE IN"
- end
- get "/" do
- env["warden"].authenticate!
- "YAY YOU'RE IN"
- end
- get '/login/?' do
- haml :login_form
- end
- post '/login/?' do
- env['warden'].authenticate!
- redirect "/"
- end
- get '/logout/?' do
- env['warden'].logout
- redirect '/login'
- end
- get "/protected" do
- env['warden'].authenticate!
- "Protected dude!"
- end
- end
Add Comment
Please, Sign In to add comment