| Class | UsrController |
| In: |
app/controllers/usr_controller.rb
|
| Parent: | ApplicationController |
# File app/controllers/usr_controller.rb, line 55
55: def change_password
56: return if generate_filled_in
57: params['usr'].delete('form')
58: begin
59: @usr.change_password(params['usr']['password'], params['usr']['password_confirmation'])
60: @usr.save!
61: rescue Exception => ex
62: report_exception ex
63: flash.now['message'] = 'Your password could not be changed at this time. Please retry.'
64: render and return
65: end
66: begin
67: UsrNotify.deliver_change_password(@usr, params['usr']['password'])
68: rescue Exception => ex
69: report_exception ex
70: end
71:
72: end
# File app/controllers/usr_controller.rb, line 134
134: def delete
135: @usr = @current_usr || Usr.find_by_id( session[:usr_id] )
136: begin
137: @usr.update_attribute( :deleted, true )
138: logout
139: rescue Exception => ex
140: flash.now['message'] = "Error: #{@ex}."
141: redirect_back_or_default :action => 'welcome'
142: end
143: end
# File app/controllers/usr_controller.rb, line 108
108: def edit
109: return if generate_filled_in
110: if params['usr']['form']
111: form = params['usr'].delete('form')
112: begin
113: case form
114: when "edit"
115: unclean_params = params['usr']
116: usr_params = unclean_params.delete_if { |k,v| not Usr::CHANGEABLE_FIELDS.include?(k) }
117: @usr.attributes = usr_params
118: @usr.save
119: flash.now['notice'] = "Usr has been updated."
120: when "change_password"
121: change_password
122: when "delete"
123: delete
124: else
125: raise "unknown edit action"
126: end
127: rescue Exception => ex
128: logger.warn ex
129: logger.warn ex.backtrace
130: end
131: end
132: end
# File app/controllers/usr_controller.rb, line 74
74: def forgot_password
75: if authenticated_usr?
76: flash['message'] = 'You are currently logged in. You may change your password now.'
77: redirect_to :action => 'change_password'
78: return
79: end
80:
81: return if generate_blank_form
82:
83: if params['usr']['email'].empty?
84: flash.now['message'] = 'Please enter a valid email address.'
85: elsif (usr = Usr.find_by_email(params['usr']['email'])).nil?
86: flash.now['message'] = "We could not find a usr with the email address #{CGI.escapeHTML(params['usr']['email'])}"
87: else
88: begin
89: Usr.transaction do
90: key = usr.generate_security_token
91: url = url_for(:action => 'change_password')
92: url += "?usr[id]=#{usr.id}&key=#{key}"
93: UsrNotify.deliver_forgot_password(usr, url)
94: flash['notice'] = "Instructions on resetting your password have been emailed to #{CGI.escapeHTML(params['usr']['email'])}."
95: unless authenticated_usr?
96: redirect_to :action => 'login'
97: return
98: end
99: redirect_back_or_default :action => 'welcome'
100: end
101: rescue Exception => ex
102: report_exception ex
103: flash.now['message'] = "Your password could not be emailed to #{CGI.escapeHTML(params['usr']['email'])}"
104: end
105: end
106: end
# File app/controllers/usr_controller.rb, line 6
6: def login
7: return if generate_blank_form
8: @usr = Usr.new(params['usr'])
9: usr = Usr.authenticate(params['usr']['login'], params['usr']['password'])
10: if usr
11: @current_usr = usr
12: session[:usr_id] = usr.id
13: flash['notice'] = 'Login succeeded'
14: redirect_back_or_default :action => 'welcome'
15: else
16: @login = params['usr']['login']
17: flash['message'] = 'Login failed'
18: end
19: end
# File app/controllers/usr_controller.rb, line 49
49: def logout
50: session[:usr_id] = nil
51: @current_usr = nil
52: redirect_to :action => 'login'
53: end
# File app/controllers/usr_controller.rb, line 21
21: def signup
22: return if generate_blank_form
23: @usr = Usr.new(
24: :login => params['usr'][:login],
25: :password => params['usr'][:password],
26: :password_confirmation => params['usr'][:password_confirmation],
27: :email => params['usr'][:email],
28: :first_name => params['usr'][:first_name],
29: :last_name => params['usr'][:last_name]
30: )
31: begin
32: Usr.transaction do
33: @usr.password_needs_confirmation = true
34: if @usr.save
35: key = @usr.generate_security_token
36: url = url_for(:action => 'welcome')
37: url += "?usr[id]=#{@usr.id}&key=#{key}"
38: UsrNotify.deliver_signup(@usr, params['usr']['password'], url)
39: flash['notice'] = 'Signup successful! Please check your registered email account to verify your account registration and continue with the login.'
40: redirect_to :action => 'login'
41: end
42: end
43: rescue Exception => ex
44: report_exception ex
45: flash['message'] = 'Error creating account: confirmation email not sent'
46: end
47: end
Generate a template usr for certain actions on get
# File app/controllers/usr_controller.rb, line 159
159: def generate_blank_form
160: case request.method
161: when :get
162: @usr = Usr.new
163: render
164: return true
165: end
166: return false
167: end
Generate a template usr for certain actions on get
# File app/controllers/usr_controller.rb, line 170
170: def generate_filled_in
171: @usr = @current_usr || Usr.find_by_id( session[:usr_id] )
172: case request.method
173: when :get
174: render
175: return true
176: end
177: return false
178: end
# File app/controllers/usr_controller.rb, line 150
150: def protect?(action)
151: if ['login', 'signup', 'forgot_password'].include?(action)
152: return false
153: else
154: return true
155: end
156: end