Guest User

Untitled

a guest
Jul 18th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. require 'rubygems'
  2. require 'sinatra'
  3. require 'sinatra_warden'
  4. require 'warden'
  5. require 'rack/flash'
  6.  
  7. require 'haml'
  8.  
  9. User = Struct.new(:id, :name, :email)
  10.  
  11. Warden::Strategies.add(:password) do
  12. def valid?
  13. p "Validating..."
  14. p params
  15. params['username'] && params['password']
  16. end
  17.  
  18. def authenticate!
  19. p "Authenticating..."
  20. p params
  21. r = params["username"] == 'test' && params["password"] == 'testing'
  22. u = User.new(1, "Peter Parker", "pparker@phrei.org")
  23. r ? success!(u) : fail!("Couldn't log in")
  24. end
  25. end
  26.  
  27. module Test
  28. class App < Sinatra::Base
  29. use Rack::Session::Cookie
  30. use Warden::Manager do |m|
  31. m.default_strategies :password
  32. m.failure_app = Test::App
  33. m.serialize_into_session { |u| u.id }
  34. m.serialize_from_session do |id|
  35. User.new(id, "Peter Parker", "pparker@phrei.org")
  36. end
  37. end # Warden::Manager
  38. use Rack::Flash
  39.  
  40. register Sinatra::Warden
  41.  
  42. set :sessions, true
  43. set :auth_failure_path, '/fail'
  44. set :auth_success_path, '/'
  45.  
  46. get '/?' do
  47. authorize!('/login')
  48. return <<-RESULT
  49. #{flash[:success]}
  50. We're in #{user.name}! your id is #{user.id}.
  51. <a href="/logout">Click Here</a> to logout.
  52. <pre>Your params where: #{params.inspect}</pre>.
  53. RESULT
  54. end
  55.  
  56. get '/fail' do
  57. "Sorry, you didn't get in."
  58. flash[:error]
  59. end
  60. end
  61.  
  62. def self.app
  63. Test::App
  64. end
  65. end
Add Comment
Please, Sign In to add comment