Description:
MERGED bug fix on user password recovery from ytopc branch (change set 402:403) git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@404 6386c4cd-e34a-4fa8-8920-d93eb39b512e
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r191:976e2beba418 - - 1 file changed: 2 inserted, 1 deleted

@@ -76,48 +76,49
76 @user.save
76 @user.save
77 @result = :successful
77 @result = :successful
78 else
78 else
79 @result = :email_used
79 @result = :email_used
80 end
80 end
81 else
81 else
82 @result = :failed
82 @result = :failed
83 end
83 end
84 render :action => 'confirm', :layout => 'empty'
84 render :action => 'confirm', :layout => 'empty'
85 end
85 end
86
86
87 def forget
87 def forget
88 render :action => 'forget', :layout => 'empty'
88 render :action => 'forget', :layout => 'empty'
89 end
89 end
90
90
91 def retrieve_password
91 def retrieve_password
92 email = params[:email]
92 email = params[:email]
93 user = User.find_by_email(email)
93 user = User.find_by_email(email)
94 if user
94 if user
95 last_updated_time = user.updated_at || user.created_at || (Time.now.gmtime - 1.hour)
95 last_updated_time = user.updated_at || user.created_at || (Time.now.gmtime - 1.hour)
96 if last_updated_time > Time.now.gmtime - 5.minutes
96 if last_updated_time > Time.now.gmtime - 5.minutes
97 flash[:notice] = 'The account has recently created or new password has recently been requested. Please wait for 5 minutes'
97 flash[:notice] = 'The account has recently created or new password has recently been requested. Please wait for 5 minutes'
98 else
98 else
99 user.password = user.password_confirmation = User.random_password
99 user.password = user.password_confirmation = User.random_password
100 + user.save
100 send_new_password_email(user)
101 send_new_password_email(user)
101 flash[:notice] = 'New password has been mailed to you.'
102 flash[:notice] = 'New password has been mailed to you.'
102 end
103 end
103 else
104 else
104 flash[:notice] = I18n.t 'registration.password_retrieval.no_email'
105 flash[:notice] = I18n.t 'registration.password_retrieval.no_email'
105 end
106 end
106 redirect_to :action => 'forget'
107 redirect_to :action => 'forget'
107 end
108 end
108
109
109 protected
110 protected
110
111
111 def verify_online_registration
112 def verify_online_registration
112 if !Configuration['system.online_registration']
113 if !Configuration['system.online_registration']
113 redirect_to :controller => 'main', :action => 'login'
114 redirect_to :controller => 'main', :action => 'login'
114 end
115 end
115 end
116 end
116
117
117 def send_confirmation_email(user)
118 def send_confirmation_email(user)
118 contest_name = Configuration['contest.name']
119 contest_name = Configuration['contest.name']
119 admin_email = Configuration['system.admin_email']
120 admin_email = Configuration['system.admin_email']
120 activation_url = url_for(:action => 'confirm',
121 activation_url = url_for(:action => 'confirm',
121 :login => user.login,
122 :login => user.login,
122 :activation => user.activation_key)
123 :activation => user.activation_key)
123 home_url = url_for(:controller => 'main', :action => 'index')
124 home_url = url_for(:controller => 'main', :action => 'index')
@@ -135,49 +136,49
135 })
136 })
136
137
137 logger.info mail.body
138 logger.info mail.body
138
139
139 smtp_server = Configuration['system.online_registration.smtp']
140 smtp_server = Configuration['system.online_registration.smtp']
140
141
141 begin
142 begin
142 Net::SMTP.start(smtp_server) do |smtp|
143 Net::SMTP.start(smtp_server) do |smtp|
143 smtp.send_message(mail.to_s, mail.from, mail.to)
144 smtp.send_message(mail.to_s, mail.from, mail.to)
144 end
145 end
145 result = true
146 result = true
146 rescue
147 rescue
147 result = false
148 result = false
148 end
149 end
149
150
150 return result
151 return result
151 end
152 end
152
153
153 def send_new_password_email(user)
154 def send_new_password_email(user)
154 contest_name = Configuration['contest.name']
155 contest_name = Configuration['contest.name']
155 admin_email = Configuration['system.admin_email']
156 admin_email = Configuration['system.admin_email']
156 mail = TMail::Mail.new
157 mail = TMail::Mail.new
157 mail.to = user.email
158 mail.to = user.email
158 mail.from = Configuration['system.online_registration.from']
159 mail.from = Configuration['system.online_registration.from']
159 - mail.subject = "[#{contest_name}] Confirmation"
160 + mail.subject = "[#{contest_name}] Password recovery"
160 mail.body = t('registration.password_retrieval.email_body', {
161 mail.body = t('registration.password_retrieval.email_body', {
161 :full_name => user.full_name,
162 :full_name => user.full_name,
162 :contest_name => contest_name,
163 :contest_name => contest_name,
163 :login => user.login,
164 :login => user.login,
164 :password => user.password,
165 :password => user.password,
165 :admin_email => admin_email
166 :admin_email => admin_email
166 })
167 })
167
168
168 logger.info mail.body
169 logger.info mail.body
169
170
170 smtp_server = Configuration['system.online_registration.smtp']
171 smtp_server = Configuration['system.online_registration.smtp']
171
172
172 begin
173 begin
173 Net::SMTP.start(smtp_server) do |smtp|
174 Net::SMTP.start(smtp_server) do |smtp|
174 smtp.send_message(mail.to_s, mail.from, mail.to)
175 smtp.send_message(mail.to_s, mail.from, mail.to)
175 end
176 end
176 result = true
177 result = true
177 rescue
178 rescue
178 result = false
179 result = false
179 end
180 end
180
181
181 return result
182 return result
182 end
183 end
183
184
You need to be logged in to leave comments. Login now