Skip to content

Commit 5b84f58

Browse files
authored
Merge pull request #593 from testmycode/improve-courses-auth-logging
Improve courses.mooc.fi auth/reset error logging
2 parents 9bfe103 + 05939b4 commit 5b84f58

File tree

2 files changed

+55
-20
lines changed

2 files changed

+55
-20
lines changed

app/controllers/password_reset_keys_controller.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ def destroy
4646
flash[:success] = 'Your password has been reset.'
4747
redirect_to root_path
4848
else
49-
'Failed to reset password.'
49+
flash.now[:alert] = 'Failed to reset password.'
50+
render action: :show, status: :forbidden
5051
end
5152
else
5253
@user.password = params[:password]

app/models/user.rb

Lines changed: 53 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -175,20 +175,30 @@ def authenticate_via_courses_mooc_fi(submitted_password)
175175
}
176176
end
177177

178-
response.body == true
178+
if response.body == true
179+
return true
180+
end
181+
182+
Rails.logger.warn(
183+
"Authentication via courses.mooc.fi rejected for user #{self.email}: status=#{response.status}, request-id=#{response.headers['request-id']}, body=#{response.body.inspect}"
184+
)
185+
false
179186

180187
rescue Faraday::ClientError => e
181188
status = e.response&.dig(:status)
182-
183-
if status == 401 || status == 403
184-
return false
185-
end
186-
187-
Rails.logger.error("Authentication via courses.mooc.fi error: #{e.response}")
189+
request_id = e.response&.dig(:headers, 'request-id')
190+
body = e.response&.dig(:body)
191+
Rails.logger.error("Authentication via courses.mooc.fi error for user #{self.email}: status=#{status}, request-id=#{request_id}, body=#{body.inspect}")
188192
raise
189193

190194
rescue => e
191-
Rails.logger.error("Unexpected error during authentication via courses.mooc.fi: #{e.message}")
195+
if defined?(response) && response
196+
status = response.status
197+
request_id = response.headers['request-id']
198+
Rails.logger.error("Unexpected error during authentication via courses.mooc.fi for user #{self.email}: status=#{status}, request-id=#{request_id}, error=#{e.message}")
199+
else
200+
Rails.logger.error("Unexpected error during authentication via courses.mooc.fi for user #{self.email} (no response): #{e.message}")
201+
end
192202
raise
193203
end
194204

@@ -218,21 +228,32 @@ def update_password_via_courses_mooc_fi(old_password, new_password)
218228
data = response.body
219229

220230
unless data == true
221-
raise "Updating password via courses.mooc.fi failed for user with courses.mooc.fi-user-id #{self.courses_mooc_fi_user_id}"
231+
raise "Updating password via courses.mooc.fi failed for user #{self.email}"
222232
end
223233

224234
true
225235

226236
rescue Faraday::ClientError => e
237+
status = e.response&.dig(:status)
238+
request_id = e.response&.dig(:headers, 'request-id')
239+
body = e.response&.dig(:body)
227240
Rails.logger.error(
228-
"Updating password via courses.mooc.fi failed for user with courses.mooc.fi-user-id #{self.courses_mooc_fi_user_id}: #{e.response}"
241+
"Updating password via courses.mooc.fi failed for user #{self.email}: status=#{status}, request-id=#{request_id}, body=#{body.inspect}"
229242
)
230243
false
231244

232245
rescue => e
233-
Rails.logger.error(
234-
"Unexpected error updating password via courses.mooc.fi for user with courses.mooc.fi-user-id #{self.courses_mooc_fi_user_id}: #{e.message}"
235-
)
246+
if defined?(response) && response
247+
status = response.status
248+
request_id = response.headers['request-id']
249+
Rails.logger.error(
250+
"Unexpected error updating password via courses.mooc.fi for user #{self.email}: status=#{status}, request-id=#{request_id}, error=#{e.message}"
251+
)
252+
else
253+
Rails.logger.error(
254+
"Unexpected error updating password via courses.mooc.fi for user #{self.email} (no response): #{e.message}"
255+
)
256+
end
236257
false
237258
end
238259
end
@@ -261,8 +282,10 @@ def post_new_user_to_courses_mooc_fi(password)
261282
data = response.body
262283

263284
unless data.is_a?(Hash) && data['user'].present?
264-
Rails.logger.error("Creating user in courses.mooc.fi returned unexpected response for user #{self.email}: #{data}")
265-
raise "Creating user in courses.mooc.fi failed for user #{self.email}"
285+
status = response.status
286+
request_id = response.headers['request-id']
287+
Rails.logger.error("Creating user in courses.mooc.fi returned unexpected response for user #{self.email}: status=#{status}, request-id=#{request_id}, body=#{data.inspect}")
288+
return false
266289
end
267290

268291
unless data['password_set']
@@ -273,15 +296,26 @@ def post_new_user_to_courses_mooc_fi(password)
273296
true
274297

275298
rescue Faraday::ClientError => e
299+
status = e.response&.dig(:status)
300+
request_id = e.response&.dig(:headers, 'request-id')
301+
body = e.response&.dig(:body)
276302
Rails.logger.error(
277-
"Creating user in courses.mooc.fi failed for user #{self.email}: #{e.response}"
303+
"Creating user in courses.mooc.fi failed for user #{self.email}: status=#{status}, request-id=#{request_id}, body=#{body.inspect}"
278304
)
279305
false
280306

281307
rescue => e
282-
Rails.logger.error(
283-
"Unexpected error creating user in courses.mooc.fi for user #{self.email}: #{e.message}"
284-
)
308+
if defined?(response) && response
309+
status = response.status
310+
request_id = response.headers['request-id']
311+
Rails.logger.error(
312+
"Unexpected error creating user in courses.mooc.fi for user #{self.email}: status=#{status}, request-id=#{request_id}, error=#{e.message}"
313+
)
314+
else
315+
Rails.logger.error(
316+
"Unexpected error creating user in courses.mooc.fi for user #{self.email} (no response): #{e.message}"
317+
)
318+
end
285319
false
286320
end
287321
end

0 commit comments

Comments
 (0)