X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8f987a9271eda80697b3a8fc53e7ebb0f93816f9..8afc85aabb9563da4de17b0b5f7d4fe574e9ad8d:/services/api/app/controllers/user_sessions_controller.rb diff --git a/services/api/app/controllers/user_sessions_controller.rb b/services/api/app/controllers/user_sessions_controller.rb index 5de85bc98b..b8fe294892 100644 --- a/services/api/app/controllers/user_sessions_controller.rb +++ b/services/api/app/controllers/user_sessions_controller.rb @@ -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,7 @@ class UserSessionsController < ApplicationController end end end + if not user # New user registration user = User.new(:email => omniauth['info']['email'], @@ -67,6 +68,13 @@ class UserSessionsController < ApplicationController # First login to a pre-activated account user.identity_url = omniauth['info']['identity_url'] end + + while (uuid = user.redirect_to_user_uuid) + user = User.unscoped.where(uuid: uuid).first + if !user + raise Exception.new("identity_url #{omniauth['info']['identity_url']} redirects to nonexistent uuid #{uuid}") + end + end end # For the benefit of functional and integration tests: