21304: Check for nil from set_initial_username
authorPeter Amstutz <peter.amstutz@curii.com>
Thu, 1 Feb 2024 21:43:06 +0000 (16:43 -0500)
committerPeter Amstutz <peter.amstutz@curii.com>
Thu, 1 Feb 2024 21:43:06 +0000 (16:43 -0500)
If set_initial_username comes back as nil (this happens when calling
update_remote_user on a remote system user), don't set username in
'needupdate', in order to avoid a spurious user record update.

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

services/api/app/models/user.rb

index 4d7b2bbaeb2d7d42a79227cff1f2f09142f19179..212b0b6ce3ddf37bd476d126004f097747d246d3 100644 (file)
@@ -680,8 +680,9 @@ SELECT target_uuid, perm_level
 
       loginCluster = Rails.configuration.Login.LoginCluster
       if user.username.nil? || user.username == ""
-        # Don't have a username yet, set one
-        needupdate[:username] = user.set_initial_username(requested: remote_user[:username])
+        # Don't have a username yet, try to set one
+        initial_username = user.set_initial_username(requested: remote_user[:username])
+        needupdate[:username] = initial_username if !initial_username.nil?
       elsif remote_user_prefix != loginCluster
         # Upstream is not login cluster, don't try to change the
         # username once set.