Guest User

Untitled

a guest
Apr 14th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. require 'rubygems'
  2. gem 'sinatra-sinatra'
  3. require 'sinatra'
  4. require 'warden'
  5. require 'haml'
  6.  
  7. class User
  8. def self.authenticate(username, password)
  9. return username if username == "hassox" && password == "sekrit"
  10. end
  11. end
  12.  
  13. Warden::Manager.serialize_into_session{ |user| user }
  14. Warden::Manager.serialize_from_session{ |user| user }
  15.  
  16. Warden::Strategies.add(:password) do
  17. def valid?
  18. params['username'] || params['password']
  19. end
  20.  
  21. def authenticate!
  22. u = User.authenticate(params['username'], params['password'])
  23. u.nil? ? fail!("Could not log in") : success!(u)
  24. end
  25. end
  26.  
  27. class WardenHandler < Sinatra::Default
  28.  
  29. configure do
  30. use Rack::Session::Cookie
  31. use Warden::Manager do |manager|
  32. manager.default_strategies :password
  33. manager.failure_app = WardenHandler
  34. end
  35. end
  36.  
  37. handler = lambda do
  38. # flash[:notice] = "That username and password are not correct!"
  39. status 401
  40. haml :login_form
  41. end
  42. get '/unauthenticated/?', &handler
  43. post '/unauthenticated/?', &handler
  44. put'/unauthenticated/?', &handler
  45. delete '/unauthenticated/?', &handler
  46.  
  47. get "/dashboard" do
  48. env["warden"].authenticate!
  49. "YAY YOU'RE IN"
  50. end
  51.  
  52. get "/" do
  53. env["warden"].authenticate!
  54. "YAY YOU'RE IN"
  55. end
  56.  
  57. get '/login/?' do
  58. haml :login_form
  59. end
  60.  
  61. post '/login/?' do
  62. env['warden'].authenticate!
  63. redirect "/"
  64. end
  65.  
  66. get '/logout/?' do
  67. env['warden'].logout
  68. redirect '/login'
  69. end
  70.  
  71. get "/protected" do
  72. env['warden'].authenticate!
  73. "Protected dude!"
  74. end
  75. end
Add Comment
Please, Sign In to add comment