12626: Add arvados/v1/users/merge API.
[arvados.git] / services / api / app / controllers / user_sessions_controller.rb
index 5de85bc98bcbcb1a0051c3ecee355e82292b5a27..87967a40a5a860a47c34c52d93ae0fcbf38a23fa 100644 (file)
@@ -26,9 +26,9 @@ class UserSessionsController < ApplicationController
 
     # Only local users can create sessions, hence uuid_like_pattern
     # here.
-    user = User.where('identity_url = ? and uuid like ?',
-                      omniauth['info']['identity_url'],
-                      User.uuid_like_pattern).first
+    user = User.unscoped.where('identity_url = ? and uuid like ?',
+                               omniauth['info']['identity_url'],
+                               User.uuid_like_pattern).first
     if not user
       # Check for permission to log in to an existing User record with
       # a different identity_url
@@ -45,6 +45,14 @@ class UserSessionsController < ApplicationController
         end
       end
     end
+
+    while (uuid = user.andand.redirect_to_user_uuid)
+      user = User.where(uuid: uuid).first
+      if !user
+        raise Exception.new("identity_url #{omniauth['info']['identity_url']} redirects to nonexistent uuid #{uuid}")
+      end
+    end
+
     if not user
       # New user registration
       user = User.new(:email => omniauth['info']['email'],