X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3d5e303970a342dd80a617058852a0dab686cfd0..1d922bf219f74efcd5fda01ed127f7ccae0790c4:/services/api/app/models/api_client_authorization.rb diff --git a/services/api/app/models/api_client_authorization.rb b/services/api/app/models/api_client_authorization.rb index f9e4e943b7..77fc0a45af 100644 --- a/services/api/app/models/api_client_authorization.rb +++ b/services/api/app/models/api_client_authorization.rb @@ -237,20 +237,16 @@ class ApiClientAuthorization < ArvadosModel # Sync user record. if remote_user_prefix == Rails.configuration.Login.LoginCluster - # Remote cluster controls our user database, copy both - # 'is_active' and 'is_admin' - user.is_active = remote_user['is_active'] + # Remote cluster controls our user database, set is_active if + # remote is active. If remote is not active, user will be + # unsetup (see below). + user.is_active = true if remote_user['is_active'] user.is_admin = remote_user['is_admin'] else if Rails.configuration.Users.NewUsersAreActive || Rails.configuration.RemoteClusters[remote_user_prefix].andand["ActivateUsers"] - # Default policy is to activate users, so match activate - # with the remote record. - user.is_active = remote_user['is_active'] - elsif !remote_user['is_active'] - # Deactivate user if the remote is inactive, otherwise don't - # change 'is_active'. - user.is_active = false + # Default policy is to activate users + user.is_active = true if remote_user['is_active'] end end @@ -259,6 +255,10 @@ class ApiClientAuthorization < ArvadosModel end act_as_system_user do + if user.is_active && !remote_user['is_active'] + user.unsetup + end + user.save! # We will accept this token (and avoid reloading the user