require 'sinatra'
require 'pp'
-class User
-
- def self.current
- # p "getting #{@current ? @current.login : 'nil'}"
- @current ||= User.new
- end
-
- attr_accessor :login
- attr_accessor :password
- attr_accessor :active
-
- def signup!(params)
- self.login = params.delete('login')
- p "signing up as #{login}"
- self.password = params.delete('password')
- self.active = false
- end
-
- def login!(params)
- self.active = valid_login?(params[:login], params[:password])
- end
-
- def valid_login?(login, password)
- (self.login == login) and (self.password == password)
- end
-end
+require 'models/user'
+require 'models/log'
get '/' do
@user = User.current
- p "visiting / as #{@user.login}"
erb :index
end
end
post '/signup' do
+ Log.clear
+ Log.log(:signup, params)
@user = User.current
@user.signup!(params)
redirect '/'
end
post '/login' do
+ Log.log(:login, params)
@user = User.current
- @user.login!(params)
+ if @user.login!(params)
+ Log.log(:response, "Login succeeded")
+ else
+ Log.log(:response, "Login failed")
+ end
redirect '/'
end
+get '/verify' do
+ erb :verify
+end
+
helpers do
def button_link(action, options = {})
action = action.to_s
--- /dev/null
+require 'yaml'
+
+class Log
+
+ def self.current
+ @current ||= Log.new
+ end
+
+ def self.log(*args)
+ self.current.log(*args)
+ end
+
+ def self.clear
+ @current = nil
+ end
+
+ attr_accessor :actions
+
+ def initialize
+ @actions = []
+ end
+
+ def log(action, params)
+ @actions << {action => params.dup}
+ end
+
+ def pretty
+ @actions.to_yaml
+ end
+
+end
--- /dev/null
+class User
+
+ def self.current
+ # p "getting #{@current ? @current.login : 'nil'}"
+ @current ||= User.new
+ end
+
+ attr_accessor :login
+ attr_accessor :password
+ attr_accessor :active
+
+ def signup!(params)
+ self.login = params.delete('login')
+ self.password = params.delete('password')
+ self.active = false
+ end
+
+ def login!(params)
+ self.active = valid_login?(params[:login], params[:password])
+ end
+
+ def valid_login?(login, password)
+ (self.login == login) and (self.password == password)
+ end
+end
--- /dev/null
+<h2>3. Verify</h2>
+<pre>
+ <%= Log.current.pretty %>
+</pre>
+<div class="form-actions">
+ <a href="/" class="btn btn-primary">Back</a>
+</div>