Class UsrController
In: app/controllers/usr_controller.rb
Parent: ApplicationController

Methods

Public Instance methods

[Source]

    # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

     # File app/controllers/usr_controller.rb, line 145
145:   def welcome
146:   end

Protected Instance methods

Generate a template usr for certain actions on get

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # File app/controllers/usr_controller.rb, line 180
180:   def report_exception( ex )
181:     logger.warn ex
182:     logger.warn ex.backtrace.join("\n")
183:   end

[Validate]