4c3413038ffe4dfe5ffb5b785fc3e352a1c7006d
[ruby_srp.git] / example / http-srp.rb
1 require 'sinatra'
2 require 'pp'
3
4 require 'models/user'
5 require 'models/log'
6 require '../lib/srp'
7
8 get '/' do
9   @user = User.current
10   erb :index
11 end
12
13 get '/signup' do
14   erb :signup
15 end
16
17 post '/signup' do
18   Log.clear
19   Log.log(:signup, params)
20   @user = User.current
21   @user.signup!(params)
22   redirect '/'
23 end
24
25 get '/login' do
26   @user = User.current
27   erb :login
28 end
29
30 post '/handshake/' do
31   @user = User.current
32   Log.log(:handshake, params)
33   @auth = @user.initialize_auth(params)
34   Log.log(:init_auth, @auth)
35   erb :handshake, :layout => false, :content_type => :xml
36 end
37
38 post '/authenticate/' do
39   @user = User.current
40   Log.log(:authenticate, params)
41   @auth = @user.authenticate(params)
42   Log.log(:confirm_authentication, @auth)
43   erb :authenticate, :layout => false, :content_type => :xml
44 end
45
46 post '/login' do
47   Log.log(:login, params)
48   @user = User.current
49   if @user.login!(params)
50     Log.log(:response, "Login succeeded")
51   else
52     Log.log(:response, "Login failed")
53   end
54   redirect '/'
55 end
56
57 get '/verify' do
58   erb :verify
59 end
60
61 helpers do
62   def button_link(action, options = {})
63     action = action.to_s
64     label = action.capitalize
65     klass = "btn btn-large"
66     if options.delete(:primary)
67       klass += " btn-primary"
68       label += " now..."
69     end
70     %Q(<a href="#{action}" class="#{klass}" id="#{action}-view-btn">#{label}</a>)
71   end
72 end