X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/644f5de63e2b8b02e054fcbb3e9af39560cffae3..4b4bb33aca0e12ae06bce395f02031890d6ef8bc:/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..87967a40a5 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,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'],