Fix error reporting bug in User.redirect_to
authorPeter Amstutz <peter.amstutz@curii.com>
Wed, 4 Mar 2020 20:17:49 +0000 (15:17 -0500)
committerPeter Amstutz <peter.amstutz@curii.com>
Wed, 4 Mar 2020 20:17:49 +0000 (15:17 -0500)
Also improve error logging when User.register fails.

no issue #

Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

services/api/app/controllers/user_sessions_controller.rb
services/api/app/models/user.rb

index 0a03399d1f0607b5412ef6b45a47a4ac230b7e8e..85f32772b17d97ec104a070d4f39f89b973e19a0 100644 (file)
@@ -33,7 +33,8 @@ class UserSessionsController < ApplicationController
     begin
       user = User.register(authinfo)
     rescue => e
     begin
       user = User.register(authinfo)
     rescue => e
-      Rails.logger.warn e
+      Rails.logger.warn "User.register error #{e}"
+      Rails.logger.warn "authinfo was #{authinfo.inspect}"
       return redirect_to login_failure_url
     end
 
       return redirect_to login_failure_url
     end
 
index 310c2ca6980d2776936321e55000ebf2b930f353..dd447ca51a895fa2297d6860002a52ff7f360037 100644 (file)
@@ -410,10 +410,12 @@ class User < ArvadosModel
     user = self
     redirects = 0
     while (uuid = user.redirect_to_user_uuid)
     user = self
     redirects = 0
     while (uuid = user.redirect_to_user_uuid)
-      user = User.unscoped.find_by_uuid(uuid)
-      if !user
-        raise Exception.new("user uuid #{user.uuid} redirects to nonexistent uuid #{uuid}")
+      break if uuid.empty?
+      nextuser = User.unscoped.find_by_uuid(uuid)
+      if !nextuser
+        raise Exception.new("user uuid #{user.uuid} redirects to nonexistent uuid '#{uuid}'")
       end
       end
+      user = nextuser
       redirects += 1
       if redirects > 15
         raise "Starting from #{self.uuid} redirect_to_user_uuid exceeded maximum number of redirects"
       redirects += 1
       if redirects > 15
         raise "Starting from #{self.uuid} redirect_to_user_uuid exceeded maximum number of redirects"