c0c9360b8b4d38632a7f1c787fc8ac9ae2bea005
[ruby_srp.git] / example / http-srp.rb
1 require 'sinatra'
2 require 'pp'
3
4 class User
5
6   def self.current
7     # p "getting #{@current ? @current.login : 'nil'}"
8     @current ||= User.new
9   end
10
11   attr_accessor :login
12   attr_accessor :password
13   attr_accessor :active
14
15   def signup!(params)
16     self.login = params.delete('login')
17     p "signing up as #{login}"
18     self.password = params.delete('password')
19     self.active = false
20   end
21
22   def login!(params)
23     self.active = valid_login?(params[:login], params[:password])
24   end
25
26   def valid_login?(login, password)
27     (self.login == login) and (self.password == password)
28   end
29 end
30
31 get '/' do
32   @user = User.current
33   p "visiting / as #{@user.login}"
34   erb :index
35 end
36
37 get '/signup' do
38   erb :signup
39 end
40
41 post '/signup' do
42   @user = User.current
43   @user.signup!(params)
44   redirect '/'
45 end
46
47 get '/login' do
48   erb :login
49 end
50
51 post '/login' do
52   @user = User.current
53   @user.login!(params)
54   redirect '/'
55 end
56
57 helpers do
58   def button_link(action, options = {})
59     action = action.to_s
60     label = action.capitalize
61     klass = "btn btn-large"
62     if options.delete(:primary)
63       klass += " btn-primary"
64       label += " now..."
65     end
66     %Q(<a href="#{action}" class="#{klass}" id="#{action}-btn">#{label}</a>)
67   end
68 end