ab1a4f412ea68691ddc98f25dffe0dab36efcebf
[ruby_srp.git] / 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