Module: Sinatra::Backstage::User

Includes:
Helper
Defined in:
lib/sinatra/backstage/user/user_model.rb,
lib/sinatra/backstage/user/user_helper.rb,
lib/sinatra/backstage/user/user_middleware.rb

Defined Under Namespace

Modules: Helper Classes: User

Class Method Summary collapse

Methods included from Helper

#authorized?, #authorized_user, included, #set_session

Class Method Details

.registered(app) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/sinatra/backstage/user/user_middleware.rb', line 7

def self.registered(app)

	## Helpers
	app.helpers Sinatra::Cookies, Sinatra::Backstage::User::Helper

	## Configure
	app.enable :sessions
	
	app.set :user_class, Sinatra::Backstage::User::User

	## Routes
	### get login page
	app.get '/login' do
		eval "#{settings.render_engine} 'user/login'"
	end

	app.get '/signup' do
		eval "#{settings.render_engine} 'user/signup'"
	end

	### signup user
	app.post '/signup' do
		# puts "params = #{params}"
		# halt
		@errors = []
		begin
			user = settings.user_class.create(
				params[:user].merge({:role => :user})
			)
			set_session user
			redirect '/'
		rescue DataMapper::SaveFailureError => e
			puts e.resource.errors.inspect
			e.resource.errors.each do |error|
				puts error.inspect
				@errors << error
			end
			@errors.flatten!
			puts @errors.inspect
			params[:user].delete_if do |key, val|
				['password', 'password_confirmation'].include? key
			end
		end
		# puts "User::Middleware post /signup ( params['user']['email'] = #{params['user']['email']} )"
		eval "#{settings.render_engine} 'user/signup'"
	end

	### login user
	app.post '/login' do
		@errors = []
		password = params[:user].delete('password')
		user = settings.user_class.first params[:user]
		# puts "User::Middleware post '/login' ( params[:user] = #{params[:user]} )"
		# puts "User::Middleware post '/login' ( user = #{user} )"
		if user.nil?
			@errors << "Incorrect #{params[:user].keys.join(' or ')}"
		else
			if user.password == password
				set_session user
				redirect '/'
			else
				@errors << "Incorrect password"
			end
		end
		eval "#{settings.render_engine} 'user/login'"
	end

	### logout user
	app.get '/logout' do
		set_session nil
		redirect '/'
	end

end