Skip to content

Instantly share code, notes, and snippets.

@hassox
Forked from somebee/gist:224608
Created November 2, 2009 23:33
Show Gist options
  • Select an option

  • Save hassox/224623 to your computer and use it in GitHub Desktop.

Select an option

Save hassox/224623 to your computer and use it in GitHub Desktop.
# encoding: utf-8
require 'methopara'
require 'rubygems'
require 'sinatra'
require 'dm-core'
require 'dm-types'
require 'dm-serializer'
require 'dm-validations'
require 'dm-migrations'
require 'dm-is-tree'
require 'dm-accepts_nested_attributes'
require 'memcache'
require 'haml'
require 'warden'
require 'bigdecimal/util'
# require 'rack/session/memcache'
Dir['lib/**/*.rb'].each{ |lib| require lib}
Dir['models/**/*.rb'].each{|m| require m}
Warden::Manager.serialize_into_session{|user| user.id }
Warden::Manager.serialize_from_session{|id| Entity.get(id) }
Warden::Manager.before_failure do |env,opts|
env['REQUEST_METHOD'] = "POST"
end
Warden::Strategies.add(:password) do
def valid?
params["login"] || params["secret"]
end
def authenticate!
u = Entity.authenticate(params["login"], params["secret"])
u.nil? ? fail!("Could not log in") : success!(u)
end
end
set :haml, {:attr_wrapper => '"' }
class Testing < Sinatra::Base
use Rack::Session::Cookie
use Warden::Manager do |manager|
manager.default_strategies :password
manager.failure_app = Testing
end
helpers do
def warden
env['warden']
end
end
get "/" do
warden.authenticate!
return "Testing this"
end
post '/unauthenticated/?' do
status 401
haml :"session/login"
end
get '/login/?' do
haml :"session/login"
end
post '/login/?' do
warden.authenticate!
redirect "/"
end
get '/logout/?' do
warden.logout
redirect '/'
end
end
Testing.run!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment