Sha256: 4501575ef789214e01717abf9bfcca2658a1e2a500ba523c923132e997077872

Contents?: true

Size: 1.36 KB

Versions: 14

Compression:

Stored size: 1.36 KB

Contents

require 'sinatra/base'
require 'sinatra_more'
require 'warden'

class WardenUser
  attr_accessor :id, :name, :username, :password

  def initialize(id, name, username, password)
    self.id, self.name, self.username, self.password = id, name, username, password
  end

  def self.find(id)
    return self.john_user if id == self.john_user.id
  end

  def self.authenticate(username, password)
    return self.john_user if username == self.john_user.username && password == self.john_user.password
  end

  def self.john_user
    @john ||= WardenUser.new(21, "John", 'john21', 'secret')
  end
end

class WardenDemo < Sinatra::Base
  use Rack::Session::Cookie
  register SinatraMore::WardenPlugin
  SinatraMore::WardenPlugin::PasswordStrategy.user_class = WardenUser

  configure do
    set :root, File.dirname(__FILE__)
  end

  get '/login' do
    "<h1>Please login!</h1>"
  end

  post '/login' do
    authenticate_user!
  end

  get '/logout' do
    logout_user!
  end

  get '/logged_in' do
    "<h1>logged_in? #{logged_in?}</h1>"
  end

  get '/authenticated' do
    haml :dashboard
  end

  get '/unregistered' do
    haml :dashboard
  end

  get '/must_be_authorized' do
    must_be_authorized!('/login')
    "<h1>Valid Authorized Page</h1>"
  end

  get '/current_user' do
    if current_user
      "<h1>#{current_user.name}</h1>"
    else
      "<h2>Not logged in</h2>"
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
sinatra_more-0.3.9 test/fixtures/warden_app/app.rb
sinatra_more-0.3.8 test/fixtures/warden_app/app.rb
sinatra_more-0.3.7 test/fixtures/warden_app/app.rb
sinatra_more-0.3.6 test/fixtures/warden_app/app.rb
sinatra_more-0.3.5 test/fixtures/warden_app/app.rb
sinatra_more-0.3.4 test/fixtures/warden_app/app.rb
sinatra_more-0.3.3 test/fixtures/warden_app/app.rb
sinatra_more-0.3.2 test/fixtures/warden_app/app.rb
sinatra_more-0.3.1 test/fixtures/warden_app/app.rb
sinatra_more-0.3.0 test/fixtures/warden_app/app.rb
sinatra_more-0.2.9 test/fixtures/warden_app/app.rb
sinatra_more-0.2.8 test/fixtures/warden_app/app.rb
sinatra_more-0.2.7 test/fixtures/warden_app/app.rb
sinatra_more-0.2.5 test/fixtures/warden_app/app.rb