From 3bf63c1be0168b2b81ce934ce1001ea19c30a9bc Mon Sep 17 00:00:00 2001 From: Stanislav Melnichuk Date: Wed, 9 Oct 2024 15:18:14 +0300 Subject: [PATCH] engine: Add button to remove all direct user permissions This button useful for large instances, when we have many roles for each user. Some times we want to totally clean roles for user, and this can be hard to look at all roles and search each direct one. Signed-off-by: Stanislav Melnichuk --- .../ui/common/CommonApplicationConstants.java | 2 + .../CommonApplicationConstants.properties | 1 + .../CommonApplicationConstants_ru.properties | 1 + .../models/users/UserPermissionListModel.java | 49 +++++++++++++++++++ .../ui/webadmin/gin/uicommon/UserModule.java | 2 +- ...rPermissionActionPanelPresenterWidget.java | 6 +++ 6 files changed, 60 insertions(+), 1 deletion(-) diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java index 7d6eddd378d..b85cebf60db 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java @@ -647,6 +647,8 @@ public interface CommonApplicationConstants extends Constants { String removePermission(); + String removeDirectSystemPermissions(); + String objectPermission(); String addSystemPermission(); diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants.properties b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants.properties index 676d9def608..50bbad8a5f4 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants.properties +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants.properties @@ -636,6 +636,7 @@ registerDisksLabel=Register Disks remoteDesktop=Remote Desktop removeConfirmationPopupMessage=Are you sure you want to remove the following items? removeDisk=Remove +removeDirectSystemPermissions=Remove Direct System Permissions removeInterface=Remove removePermission=Remove removeProfile=Remove diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ru.properties b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ru.properties index ac998d47d1a..8ade4b0c372 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ru.properties +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ru.properties @@ -549,6 +549,7 @@ registerDisksLabel=\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\ remoteDesktop=\u0423\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u0439 \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u0441\u0442\u043E\u043B removeConfirmationPopupMessage=\u0412\u044B \u0442\u043E\u0447\u043D\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B? removeDisk=\u0423\u0434\u0430\u043B\u0438\u0442\u044C +removeDirectSystemPermissions=\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 removeInterface=\u0423\u0434\u0430\u043B\u0438\u0442\u044C removePermission=\u0423\u0434\u0430\u043B\u0438\u0442\u044C removeProfile=\u0423\u0434\u0430\u043B\u0438\u0442\u044C diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserPermissionListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserPermissionListModel.java index 240722ea0cd..95994ff8719 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserPermissionListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserPermissionListModel.java @@ -29,6 +29,7 @@ public class UserPermissionListModel extends PermissionListModel { private UICommand addRoleToUserCommand; + private UICommand removeDirectRolesFromUserCommand; @Inject public UserPermissionListModel(Provider adElementListModelProvider) { @@ -39,6 +40,11 @@ public UserPermissionListModel(Provider adElementListModelPr setAddRoleToUserCommand(new UICommand("AddRoleToUser", this)); // $NON-NLS-1$ getCommands().add(getAddRoleToUserCommand()); + + setRemoveDirectRolesFromUserCommand(new UICommand("RemoveDirectRolesFromUser", this)); // $NON-NLS-1$ + getCommands().add(getRemoveDirectRolesFromUserCommand()); + getItemsChangedEvent().addListener((ev, sender, args) -> updateRemoveDirectPermissionActionAvailability()); + updateActionAvailability(); } @@ -86,6 +92,41 @@ private void setAddRoleToUserCommand(UICommand value) { addRoleToUserCommand = value; } + public UICommand getRemoveDirectRolesFromUserCommand() { + return removeDirectRolesFromUserCommand; + } + + public void setRemoveDirectRolesFromUserCommand(UICommand removeDirectRolesFromUserCommand) { + this.removeDirectRolesFromUserCommand = removeDirectRolesFromUserCommand; + } + + public void removeAllDirect() { + List elementsToRemove = getDirectPermissions(); + + // Correctly set permissions to delete into the selected items. + if (!elementsToRemove.isEmpty()) { + setSelectedItem(elementsToRemove.get(0)); + } + setSelectedItems(elementsToRemove); + + remove(); + } + + private List getDirectPermissions() { + List directPermissions = new ArrayList<>(); + if (getItems() == null || getItems().isEmpty()) { + return directPermissions; + } + for (Permission item : getItems()) { + if (item.getAdElementId() != null && + getEntity() != null && + item.getAdElementId().equals(getEntity().getId())) { + directPermissions.add(item); + } + } + return directPermissions; + } + public void remove() { if (getWindow() != null) { return; @@ -167,10 +208,18 @@ private void updateActionAvailability() { getAddCommand().setIsAvailable(false); } + private void updateRemoveDirectPermissionActionAvailability() { + getRemoveDirectRolesFromUserCommand() + .setIsExecutionAllowed(!getDirectPermissions().isEmpty()); + } + @Override public void executeCommand(UICommand command) { super.executeCommand(command); + if (command == getRemoveDirectRolesFromUserCommand()) { + removeAllDirect(); + } if (command == getRemoveCommand()) { remove(); } else if (command == getAddRoleToUserCommand()) { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/UserModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/UserModule.java index 20a2299aeb8..5edcd9ce7dc 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/UserModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/UserModule.java @@ -137,7 +137,7 @@ public SearchableDetailModelProvider getConfirmModelPopup(UserPermissionListModel source, UICommand lastExecutedCommand) { - if (lastExecutedCommand == getModel().getRemoveCommand()) { + if (lastExecutedCommand == getModel().getRemoveCommand() || lastExecutedCommand == getModel().getRemoveDirectRolesFromUserCommand()) { return removeConfirmPopupProvider.get(); } else { return super.getConfirmModelPopup(source, lastExecutedCommand); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/user/UserPermissionActionPanelPresenterWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/user/UserPermissionActionPanelPresenterWidget.java index 2b7c90ca488..b4ea302f63e 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/user/UserPermissionActionPanelPresenterWidget.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/user/UserPermissionActionPanelPresenterWidget.java @@ -34,6 +34,12 @@ protected UICommand resolveCommand() { return getDetailModel().getAddRoleToUserCommand(); } }); + addActionButton(new UiCommandButtonDefinition(getSharedEventBus(), constants.removeDirectSystemPermissions()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getRemoveDirectRolesFromUserCommand(); + } + }); super.initializeButtons(); } }