X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/dd9651140d782919e475a6252e4c770c46d96252..49fb55aa1a9fb35d8e7e620717cb42f77d448a43:/services/api/app/controllers/user_sessions_controller.rb?ds=sidebyside 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'],