From 12b30b7e861c510593c6a8bd4bae68c2126106db Mon Sep 17 00:00:00 2001 From: Azul Date: Tue, 26 Jun 2012 18:56:43 +0200 Subject: moved user and log class to models, verify prints logs --- example/http-srp.rb | 42 ++++++++++++++---------------------------- example/models/log.rb | 31 +++++++++++++++++++++++++++++++ example/models/user.rb | 25 +++++++++++++++++++++++++ example/views/verify.erb | 7 +++++++ 4 files changed, 77 insertions(+), 28 deletions(-) create mode 100644 example/models/log.rb create mode 100644 example/models/user.rb create mode 100644 example/views/verify.erb (limited to 'example') diff --git a/example/http-srp.rb b/example/http-srp.rb index c0c9360..4faa149 100644 --- a/example/http-srp.rb +++ b/example/http-srp.rb @@ -1,36 +1,11 @@ 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 @@ -39,6 +14,8 @@ get '/signup' do end post '/signup' do + Log.clear + Log.log(:signup, params) @user = User.current @user.signup!(params) redirect '/' @@ -49,11 +26,20 @@ get '/login' do 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 diff --git a/example/models/log.rb b/example/models/log.rb new file mode 100644 index 0000000..9e700a8 --- /dev/null +++ b/example/models/log.rb @@ -0,0 +1,31 @@ +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 diff --git a/example/models/user.rb b/example/models/user.rb new file mode 100644 index 0000000..f3f86ba --- /dev/null +++ b/example/models/user.rb @@ -0,0 +1,25 @@ +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 diff --git a/example/views/verify.erb b/example/views/verify.erb new file mode 100644 index 0000000..4bbe1c6 --- /dev/null +++ b/example/views/verify.erb @@ -0,0 +1,7 @@ +

3. Verify

+
+  <%= Log.current.pretty %>
+
+
+ Back +
-- cgit v1.2.3