Skip to content

Instantly share code, notes, and snippets.

@somebee
Created November 2, 2009 23:18
Show Gist options
  • Select an option

  • Save somebee/224608 to your computer and use it in GitHub Desktop.

Select an option

Save somebee/224608 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
get "/" do
return "Testing this"
end
post '/unauthenticated/?' do
status 401
haml :"session/login"
end
get '/login/?' do
haml :"session/login"
end
post '/login/?' do
env['warden'].authenticate!
redirect "/"
end
get '/logout/?' do
env['warden'].logout
redirect '/'
end
end
Rack::Builder.new do
use Rack::Session::Cookie
use Warden::Manager do |manager|
manager.default_strategies :password
manager.failure_app = Testing
end
run Testing
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment