Merge branch 'permission-vertical' of ssh://trac@sapsailing.com/home/trac/git into permission-vertical

This commit is contained in:
Kai Börnert committed 2018-12-03 18:21:38 +01:00
commit 9fc68ae429
4 files changed
+44 -43

No files matched your search

@@ -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();
}
@@ -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);
}
}
@@ -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<>();
@@ -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;
}
}