Browse Source

Fix account sync preconditions (#54)

Merge branch 'master' into kris/fix_account_sync_preconditions

Add comments about account sync restrictions

Revert wrong fix

Fix account sync preconditions

Co-authored-by: jonathan <jonathan@noreply.git.bubblev.org>
Co-authored-by: Kristijan Mitrovic <kmitrovic@itekako.com>
Reviewed-on: #54
tags/v1.1.0
Kristijan Mitrovic 4 years ago
committed by jonathan
parent
commit
ea5aef9fc1
1 changed files with 18 additions and 4 deletions
  1. +18
    -4
      bubble-server/src/main/java/bubble/service/account/StandardSyncAccountService.java

+ 18
- 4
bubble-server/src/main/java/bubble/service/account/StandardSyncAccountService.java View File

@@ -46,18 +46,21 @@ public class StandardSyncAccountService implements SyncAccountService {
log.warn("sync: thisNetwork was null, sync_account is impossible");
return;
}
if (!account.admin()) {
log.info("sync: not syncing non-admin account");
return;
}

if (!account.sync()) {
log.info("sync: account sync disabled for account: "+account.getName());
return;
}

final AnsibleInstallType installType = thisNetwork.getInstallType();
if (installType == AnsibleInstallType.sage) {
// changing account on sage, notify all bubbles launched by user that have syncAccount == true

// sync account: sage -> node(s)
// Note that a non-admin person can change only his own account on sage node, while admin can change any
// account. In both cases, the change should be synced through the nodes, so even for non-admin account, the
// sync should be done here.

for (BubbleNetwork network : networkDAO.findByAccount(account.getUuid())) {
if (network.getState() != BubbleNetworkState.running) continue;
if (!network.syncAccount()) continue;
@@ -72,10 +75,21 @@ public class StandardSyncAccountService implements SyncAccountService {
}

} else if (installType == AnsibleInstallType.node) {
// sync account: node -> sage
// On sage there's just a single account related to this node - the node's network owner's account. So only
// that account should be synced in this case. It doesn't matter if somebody already changed this account
// to be non-admin (TODO strange situation and maybe it should be tested if it is forbidden already)

if (account.getUuid().equals(thisNetwork.getAccount())) {
log.info("sync: not syncing non-owner account from node to sage");
return;
}

if (!thisNetwork.syncAccount()) {
log.info("sync: disabled for node, not sending sync_account notification");
return;
}

// changing account on node, notify sage, which will then notify all bubbles launched by user that have
// syncAccount == true
log.info("sync: sending sync_account notification from node to sage: "+configuration.getSageNode());


Loading…
Cancel
Save