mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-14 06:18:12 +00:00
Fixed client-side permission check that decides if the add role action
for UserGroups is shown
This commit is contained in:
1 parent
6f036e9a57
commit
79db825833
3 files changed
+23
-2
No files matched your search
+5
@@ -512,6 +512,11 @@ public class UserService {
|
||||
return this.hasCurrentUserAnyPermission(createPermission, null);
|
||||
}
|
||||
|
||||
public boolean hasCurrentUserPermissionToUpdateAnyObjectOfType(HasPermissions type) {
|
||||
final WildcardPermission createPermission = type.getPermission(DefaultActions.UPDATE);
|
||||
return this.hasCurrentUserAnyPermission(createPermission, null);
|
||||
}
|
||||
|
||||
public ServerInfoDTO getServerInfo() {
|
||||
return serverInfo;
|
||||
}
|
||||
|
||||
+17
-1
@@ -27,7 +27,7 @@ public class AccessControlledButtonPanel extends Composite {
|
||||
private final HorizontalPanel panel = new HorizontalPanel();
|
||||
private final Map<Button, Supplier<Boolean>> buttonToPermissions = new HashMap<>();
|
||||
|
||||
private final Supplier<Boolean> createPermissionCheck, removePermissionCheck;
|
||||
private final Supplier<Boolean> createPermissionCheck, removePermissionCheck, updatePermissionCheck;
|
||||
private final BiConsumer<Button, Supplier<Boolean>> visibilityUpdater = (btn, check) -> btn.setVisible(check.get());
|
||||
|
||||
/**
|
||||
@@ -42,6 +42,7 @@ public class AccessControlledButtonPanel extends Composite {
|
||||
public AccessControlledButtonPanel(final UserService userService, final HasPermissions type) {
|
||||
this.createPermissionCheck = () -> userService.hasCurrentUserPermissionToCreateObjectOfType(type);
|
||||
this.removePermissionCheck = () -> userService.hasCurrentUserPermissionToDeleteAnyObjectOfType(type);
|
||||
this.updatePermissionCheck = () -> userService.hasCurrentUserPermissionToUpdateAnyObjectOfType(type);
|
||||
userService.addUserStatusEventHandler((user, preAuth) -> updateVisibility(), true);
|
||||
initWidget(panel);
|
||||
}
|
||||
@@ -103,6 +104,21 @@ public class AccessControlledButtonPanel extends Composite {
|
||||
public Button addRemoveAction(final String text, final Command callback) {
|
||||
return addAction(text, removePermissionCheck, callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a secured action button, which is only visible if the current user has any
|
||||
* {@link UserService#hasCurrentUserPermissionToUpdateAnyObjectOfType(HasPermissions) update permission} for the
|
||||
* {@link HasPermissions type} provided in this {@link AccessControlledButtonPanel}'s constructor.
|
||||
*
|
||||
* @param text
|
||||
* the {@link String text} to show on the button
|
||||
* @param callback
|
||||
* the {@link Command callback} to execute on button click, if permission is granted
|
||||
* @return the created {@link Button} instance
|
||||
*/
|
||||
public Button addUpdateAction(final String text, final Command callback) {
|
||||
return addAction(text, updatePermissionCheck, callback);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an action button, which's visibility depends on the provided {@link Supplier permission check}.
|
||||
|
||||
+1
-1
@@ -99,7 +99,7 @@ public class UserGroupRoleDefinitionPanel extends Composite
|
||||
private Widget createButtonPanel(final UserService userService, final StringMessages stringMessages) {
|
||||
final AccessControlledButtonPanel buttonPanel = new AccessControlledButtonPanel(userService, USER_GROUP);
|
||||
final UserManagementServiceAsync userManagementService = userService.getUserManagementService();
|
||||
buttonPanel.addCreateAction(stringMessages.addRole(), () -> {
|
||||
buttonPanel.addUpdateAction(stringMessages.addRole(), () -> {
|
||||
final UserGroupDTO selectedObject = userGroupSelectionModel.getSelectedObject();
|
||||
if (selectedObject != null) {
|
||||
StrippedRoleDefinitionDTO role = ((RoleDefinitionSuggestOracle) suggestRole.getSuggestOracle())
|
||||
|
||||
Reference in new issue
Block a user