From a99170cde715d564f78853aa2fb8d5ed7f584816 Mon Sep 17 00:00:00 2001 From: dbernstein Date: Tue, 5 Mar 2019 10:51:15 -0500 Subject: [PATCH] DURACLOUD-1226: Ensures that instances are notified when user root permission changes. (PR #25) Resolves: https://jira.duraspace.org/browse/DURACLOUD-1226 --- .../impl/RootAccountManagerServiceImpl.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/account-management-util/src/main/java/org/duracloud/account/db/util/impl/RootAccountManagerServiceImpl.java b/account-management-util/src/main/java/org/duracloud/account/db/util/impl/RootAccountManagerServiceImpl.java index 4e30a99cd..1fce14a6a 100644 --- a/account-management-util/src/main/java/org/duracloud/account/db/util/impl/RootAccountManagerServiceImpl.java +++ b/account-management-util/src/main/java/org/duracloud/account/db/util/impl/RootAccountManagerServiceImpl.java @@ -101,7 +101,11 @@ public void deleteUser(Long userId) { // Remove the user getUserRepo().delete(userId); - notifyUserChange(accountRights); + if (user.isRoot()) { + notifyRootUsersChanged(); + } else { + notifyUserChange(accountRights); + } } @Override @@ -111,11 +115,8 @@ public void setRootUser(Long userId) { // Adding root from the user DuracloudUser user = repoMgr.getUserRepo().findOne(userId); user.setRoot(true); + notifyRootUsersChanged(); - // Load user rights - List accountRights = getRightsRepo().findByUserId(userId); - - notifyUserChange(accountRights); } @Override @@ -125,11 +126,7 @@ public void unsetRootUser(Long userId) { // Remove root from the user DuracloudUser user = repoMgr.getUserRepo().findOne(userId); user.setRoot(false); - - // Load user rights - List accountRights = getRightsRepo().findByUserId(userId); - - notifyUserChange(accountRights); + notifyRootUsersChanged(); } private void notifyUserChange(List accountRights) { @@ -142,6 +139,14 @@ private void notifyUserChange(List accountRights) { } } + private void notifyRootUsersChanged() { + try { + this.accountChangeNotifier.rootUsersChanged(); + } catch (Exception ex) { + log.error("failed to notify of user change: " + ex.getMessage(), ex); + } + } + private void notifyAccountChange(List accountRights) { for (AccountRights right : accountRights) { try {