mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-08 20:12:23 +00:00
Merge branch 'permission-vertical' of ssh://trac@sapsailing.com/home/trac/git into permission-vertical
This commit is contained in:
commit
9fc68ae429
4 files changed
+44
-43
No files matched your search
+2
-17
@@ -1,7 +1,5 @@
|
||||
package com.sap.sse.security.ui.client.component;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.Window;
|
||||
@@ -33,12 +31,10 @@ public class UserGroupManagementPanel extends DockPanel {
|
||||
|
||||
private final UserGroupTableWrapper userGroupTableWrapper;
|
||||
|
||||
private final UserManagementServiceAsync userManagementService;
|
||||
|
||||
public UserGroupManagementPanel(final UserService userService, final StringMessages stringMessages,
|
||||
Iterable<HasPermissions> additionalPermissions, ErrorReporter errorReporter,
|
||||
CellTableWithCheckboxResources tableResources) {
|
||||
userManagementService = userService.getUserManagementService();
|
||||
final UserManagementServiceAsync userManagementService = userService.getUserManagementService();
|
||||
final VerticalPanel west = new VerticalPanel();
|
||||
|
||||
// create button bar
|
||||
@@ -133,18 +129,7 @@ public class UserGroupManagementPanel extends DockPanel {
|
||||
|
||||
/** Updates the UserGroups. */
|
||||
public void updateUserGroups() {
|
||||
userManagementService.getUserGroups(new AsyncCallback<Collection<UserGroupDTO>>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
Window.alert(caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Collection<UserGroupDTO> result) {
|
||||
userGroupTableWrapper.refreshUserGroups(result);
|
||||
}
|
||||
});
|
||||
userGroupTableWrapper.refreshUserList(null);
|
||||
userGroupListDataProvider.updateDisplays();
|
||||
userGroupDetailPanel.updateLists();
|
||||
}
|
||||
|
||||
+6
-23
@@ -26,7 +26,6 @@ import com.sap.sse.security.shared.HasPermissions;
|
||||
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
|
||||
import com.sap.sse.security.shared.dto.UserGroupDTO;
|
||||
import com.sap.sse.security.shared.impl.SecuredSecurityTypes;
|
||||
import com.sap.sse.security.ui.client.UserManagementServiceAsync;
|
||||
import com.sap.sse.security.ui.client.UserService;
|
||||
import com.sap.sse.security.ui.client.component.editacl.EditACLDialog;
|
||||
import com.sap.sse.security.ui.client.i18n.StringMessages;
|
||||
@@ -57,10 +56,10 @@ public class UserGroupTableWrapper extends
|
||||
}
|
||||
}, tableResources);
|
||||
this.userService = userService;
|
||||
ListHandler<UserGroupDTO> userColumnListHandler = getColumnSortHandler();
|
||||
final ListHandler<UserGroupDTO> userColumnListHandler = getColumnSortHandler();
|
||||
|
||||
// users table
|
||||
TextColumn<UserGroupDTO> UserGroupWithSecurityDTONameColumn = new AbstractSortableTextColumn<UserGroupDTO>(
|
||||
final TextColumn<UserGroupDTO> UserGroupWithSecurityDTONameColumn = new AbstractSortableTextColumn<UserGroupDTO>(
|
||||
UserGroupDTO -> UserGroupDTO.getName(), userColumnListHandler);
|
||||
|
||||
final HasPermissions type = SecuredSecurityTypes.USER_GROUP;
|
||||
@@ -69,7 +68,7 @@ public class UserGroupTableWrapper extends
|
||||
new DefaultActionsImagesBarCell(stringMessages), userService, type, idFactory);
|
||||
actionColumn.addAction(ACTION_DELETE, DELETE, userGroupDTO -> {
|
||||
if (Window.confirm(stringMessages.doYouReallyWantToRemoveUserGroup(userGroupDTO.getName()))) {
|
||||
getUserManagementService().deleteUserGroup(userGroupDTO.getId().toString(),
|
||||
userService.getUserManagementService().deleteUserGroup(userGroupDTO.getId().toString(),
|
||||
new AsyncCallback<SuccessInfo>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
@@ -101,6 +100,7 @@ public class UserGroupTableWrapper extends
|
||||
final EditACLDialog.DialogConfig<UserGroupDTO> configACL = EditACLDialog.create(
|
||||
userService.getUserManagementService(), type, idFactory, user -> user.getAccessControlList(),
|
||||
stringMessages);
|
||||
|
||||
actionColumn.addAction(DefaultActionsImagesBarCell.ACTION_CHANGE_OWNERSHIP, DefaultActions.CHANGE_OWNERSHIP,
|
||||
configOwnership::openDialog);
|
||||
actionColumn.addAction(DefaultActionsImagesBarCell.ACTION_CHANGE_ACL, DefaultActions.CHANGE_ACL,
|
||||
@@ -130,18 +130,10 @@ public class UserGroupTableWrapper extends
|
||||
table.ensureDebugId("UserGroupWithSecurityDTOTable");
|
||||
}
|
||||
|
||||
public Iterable<UserGroupDTO> getAllUsers() {
|
||||
return filterField.getAll();
|
||||
}
|
||||
|
||||
public LabeledAbstractFilterablePanel<UserGroupDTO> getFilterField() {
|
||||
return filterField;
|
||||
}
|
||||
|
||||
public void refreshUserGroups(Iterable<UserGroupDTO> UserGroupWithSecurityDTOs) {
|
||||
getFilteredUserGroups(UserGroupWithSecurityDTOs);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param callback
|
||||
* optional; may be {@code null}
|
||||
@@ -159,21 +151,12 @@ public class UserGroupTableWrapper extends
|
||||
|
||||
@Override
|
||||
public void onSuccess(Collection<UserGroupDTO> result) {
|
||||
getFilteredUserGroups(result);
|
||||
refreshUserGroups(result);
|
||||
filterField.updateAll(result);
|
||||
if (callback != null) {
|
||||
callback.onSuccess(result);
|
||||
}
|
||||
}
|
||||
};
|
||||
getUserManagementService().getUserGroups(myCallback);
|
||||
}
|
||||
|
||||
private void getFilteredUserGroups(Iterable<UserGroupDTO> result) {
|
||||
filterField.updateAll(result);
|
||||
}
|
||||
|
||||
private UserManagementServiceAsync getUserManagementService() {
|
||||
return userService.getUserManagementService();
|
||||
userService.getUserManagementService().getUserGroups(myCallback);
|
||||
}
|
||||
}
|
||||
+18
-1
@@ -192,6 +192,15 @@ public class SecurityDTOFactory {
|
||||
return result;
|
||||
}
|
||||
|
||||
public Iterable<StrippedUserGroupDTO> createStrippedUserGroupDTOFromUserGroups(Iterable<UserGroup> userGroups,
|
||||
Map<UserGroup, StrippedUserGroupDTO> fromOriginalToStrippedDownUserGrou) {
|
||||
Collection<StrippedUserGroupDTO> result = new ArrayList<>();
|
||||
for (UserGroup userGroup : userGroups) {
|
||||
result.add(createStrippedUserGroupDTOFromUserGroup(userGroup, fromOriginalToStrippedDownUserGrou));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public StrippedUserGroupDTO createStrippedUserGroupDTOFromUserGroup(UserGroup userGroup,
|
||||
Map<UserGroup, StrippedUserGroupDTO> fromOriginalToStrippedDownUserGroup) {
|
||||
final StrippedUserGroupDTO result;
|
||||
@@ -270,9 +279,17 @@ public class SecurityDTOFactory {
|
||||
* @param fromOriginalToStrippedDownUser
|
||||
* @param fromOriginalToStrippedDownUserGroup
|
||||
*/
|
||||
public AccessControlListDTO pruneAccessControlListForUser(AccessControlListDTO acl, StrippedUserDTO filterForUser) {
|
||||
public AccessControlListDTO pruneAccessControlListForUser(AccessControlListDTO acl, StrippedUserDTO filterForUser,
|
||||
Iterable<StrippedUserGroupDTO> allUserGroups) {
|
||||
final AccessControlListDTO result;
|
||||
// add user groups of filterForUser user
|
||||
final Collection<StrippedUserGroupDTO> userGroups = Util.createSet(filterForUser.getUserGroups());
|
||||
// add user groups of alluser
|
||||
if (allUserGroups != null) {
|
||||
userGroups.addAll(Util.createSet(allUserGroups));
|
||||
}
|
||||
// add null user group
|
||||
userGroups.add(null);
|
||||
|
||||
if (acl != null) {
|
||||
final Map<StrippedUserGroupDTO, Set<String>> actionsByUserGroup = new HashMap<>();
|
||||
|
||||
+18
-2
@@ -25,6 +25,8 @@ public abstract class SecurityDTOUtil {
|
||||
private SecurityDTOUtil() {
|
||||
}
|
||||
|
||||
private static Iterable<StrippedUserGroupDTO> allUserGroups;
|
||||
|
||||
/**
|
||||
* Adds {@link AccessControlList access control list} and {@link Ownership ownership} information for the given
|
||||
* {@link QualifiedObjectIdentifier qualified object identifier} to the provided {@link NamedSecuredObjectDTO
|
||||
@@ -107,11 +109,13 @@ public abstract class SecurityDTOUtil {
|
||||
} else {
|
||||
User user = securityService.getCurrentUser();
|
||||
if (user != null) {
|
||||
// TODO also prune for all user
|
||||
StrippedUserDTO userDTO = new SecurityDTOFactory().createStrippedUserFromUser(user, securityService,
|
||||
fromOriginalToStrippedDownUser, fromOriginalToStrippedDownUserGroup);
|
||||
final Iterable<StrippedUserGroupDTO> allUserGroups2 = getUserGroupsForAlluser(securityService,
|
||||
securityDTOFactory);
|
||||
securedObject.setAccessControlList(
|
||||
securityDTOFactory.pruneAccessControlListForUser(accessControlListDTO, userDTO));
|
||||
securityDTOFactory.pruneAccessControlListForUser(accessControlListDTO, userDTO,
|
||||
allUserGroups2));
|
||||
}
|
||||
}
|
||||
final OwnershipAnnotation ownership = securityService.getOwnership(objectId);
|
||||
@@ -119,4 +123,16 @@ public abstract class SecurityDTOUtil {
|
||||
securityDTOFactory.createOwnershipDTO(ownership == null ? null : ownership.getAnnotation(),
|
||||
fromOriginalToStrippedDownUser, fromOriginalToStrippedDownUserGroup));
|
||||
}
|
||||
|
||||
/** Get the UserGroups for the user alluser. */
|
||||
private static Iterable<StrippedUserGroupDTO> getUserGroupsForAlluser(SecurityService securityService,
|
||||
SecurityDTOFactory securityDTOFactory) {
|
||||
if (allUserGroups == null) {
|
||||
if (securityService.getAllUser() != null) {
|
||||
allUserGroups = securityDTOFactory.createStrippedUserGroupDTOFromUserGroups(
|
||||
securityService.getAllUser().getUserGroups(), new HashMap<>());
|
||||
}
|
||||
}
|
||||
return allUserGroups;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user