Skip to content

Commit

Permalink
engine: Add button to remove all direct user permissions
Browse files Browse the repository at this point in the history
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 <melnichuk.stas@gmail.com>
  • Loading branch information
0ffer committed Oct 9, 2024
1 parent 0a1ba82 commit 3bf63c1
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -647,6 +647,8 @@ public interface CommonApplicationConstants extends Constants {

String removePermission();

String removeDirectSystemPermissions();

String objectPermission();

String addSystemPermission();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
public class UserPermissionListModel extends PermissionListModel<DbUser> {

private UICommand addRoleToUserCommand;
private UICommand removeDirectRolesFromUserCommand;

@Inject
public UserPermissionListModel(Provider<AdElementListModel> adElementListModelProvider) {
Expand All @@ -39,6 +40,11 @@ public UserPermissionListModel(Provider<AdElementListModel> 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();
}

Expand Down Expand Up @@ -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<Permission> elementsToRemove = getDirectPermissions();

// Correctly set permissions to delete into the selected items.
if (!elementsToRemove.isEmpty()) {
setSelectedItem(elementsToRemove.get(0));
}
setSelectedItems(elementsToRemove);

remove();
}

private List<Permission> getDirectPermissions() {
List<Permission> 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;
Expand Down Expand Up @@ -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()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ public SearchableDetailModelProvider<Permission, UserListModel, UserPermissionLi
@Override
public AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?> 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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@ protected UICommand resolveCommand() {
return getDetailModel().getAddRoleToUserCommand();
}
});
addActionButton(new UiCommandButtonDefinition<DbUser, Permission>(getSharedEventBus(), constants.removeDirectSystemPermissions()) {
@Override
protected UICommand resolveCommand() {
return getDetailModel().getRemoveDirectRolesFromUserCommand();
}
});
super.initializeButtons();
}
}

0 comments on commit 3bf63c1

Please sign in to comment.