Merge branch '15795-sys-root-token'
authorTom Clegg <tclegg@veritasgenetics.com>
Thu, 28 Nov 2019 15:19:46 +0000 (10:19 -0500)
committerTom Clegg <tclegg@veritasgenetics.com>
Thu, 28 Nov 2019 15:19:46 +0000 (10:19 -0500)
refs #15795

Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg@veritasgenetics.com>

1  2 
services/api/app/models/api_client_authorization.rb

index 651eacf6264fe36b860476cd85b6025798a72659,f9e4e943b7a31edb39852adc649d4ee37478fb2f..77fc0a45afb32ff7ea93595a4b97ff66cd128f63
@@@ -111,6 -111,7 +111,7 @@@ class ApiClientAuthorization < ArvadosM
    def self.check_system_root_token token
      if token == Rails.configuration.SystemRootToken
        return ApiClientAuthorization.new(user: User.find_by_uuid(system_user_uuid),
+                                         uuid: uuid_prefix+"-gj3su-000000000000000",
                                          api_token: token,
                                          api_client: ApiClient.new(is_trusted: true, url_prefix: ""))
      else
  
        # 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
  
        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