chore: refactor workspace members api (#17891)
This commit is contained in:
parent
f91fe64dd8
commit
3ee6572f77
|
|
@ -4,7 +4,7 @@ import com.appsmith.server.constants.Url;
|
|||
import com.appsmith.server.domains.Workspace;
|
||||
import com.appsmith.server.dtos.UpdatePermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.ResponseDTO;
|
||||
import com.appsmith.server.dtos.UserAndPermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.WorkspaceMemberInfoDTO;
|
||||
import com.appsmith.server.dtos.PermissionGroupInfoDTO;
|
||||
import com.appsmith.server.services.WorkspaceService;
|
||||
import com.appsmith.server.services.UserWorkspaceService;
|
||||
|
|
@ -47,15 +47,15 @@ public class WorkspaceControllerCE extends BaseController<WorkspaceService, Work
|
|||
}
|
||||
|
||||
@GetMapping("/{workspaceId}/members")
|
||||
public Mono<ResponseDTO<List<UserAndPermissionGroupDTO>>> getUserMembersOfWorkspace(@PathVariable String workspaceId) {
|
||||
public Mono<ResponseDTO<List<WorkspaceMemberInfoDTO>>> getUserMembersOfWorkspace(@PathVariable String workspaceId) {
|
||||
return userWorkspaceService.getWorkspaceMembers(workspaceId)
|
||||
.map(users -> new ResponseDTO<>(HttpStatus.OK.value(), users, null));
|
||||
}
|
||||
|
||||
@PutMapping("/{workspaceId}/permissionGroup")
|
||||
public Mono<ResponseDTO<UserAndPermissionGroupDTO>> updatePermissionGroupForMember(@RequestBody UpdatePermissionGroupDTO updatePermissionGroupDTO,
|
||||
@PathVariable String workspaceId,
|
||||
@RequestHeader(name = "Origin", required = false) String originHeader) {
|
||||
public Mono<ResponseDTO<WorkspaceMemberInfoDTO>> updatePermissionGroupForMember(@RequestBody UpdatePermissionGroupDTO updatePermissionGroupDTO,
|
||||
@PathVariable String workspaceId,
|
||||
@RequestHeader(name = "Origin", required = false) String originHeader) {
|
||||
return userWorkspaceService.updatePermissionGroupForMember(workspaceId, updatePermissionGroupDTO, originHeader)
|
||||
.map(user -> new ResponseDTO<>(HttpStatus.OK.value(), user, null));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,5 +16,5 @@ import java.util.List;
|
|||
public class WorkspaceApplicationsDTO {
|
||||
Workspace workspace;
|
||||
List<Application> applications;
|
||||
List<UserAndPermissionGroupDTO> users;
|
||||
List<WorkspaceMemberInfoDTO> users;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
package com.appsmith.server.dtos;
|
||||
|
||||
import com.appsmith.server.dtos.ce.WorkspaceMemberInfoCE_DTO;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
public class WorkspaceMemberInfoDTO extends WorkspaceMemberInfoCE_DTO {
|
||||
|
||||
@Builder
|
||||
public WorkspaceMemberInfoDTO(String userId, String username, String name, String permissionGroupName, String permissionGroupId) {
|
||||
super(userId, username, name, permissionGroupName, permissionGroupId);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,20 +1,14 @@
|
|||
package com.appsmith.server.dtos;
|
||||
package com.appsmith.server.dtos.ce;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
public class UserAndPermissionGroupDTO {
|
||||
|
||||
@AllArgsConstructor
|
||||
public class WorkspaceMemberInfoCE_DTO {
|
||||
String userId;
|
||||
|
||||
String username;
|
||||
|
||||
String name;
|
||||
|
||||
String permissionGroupName;
|
||||
|
||||
String permissionGroupId;
|
||||
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@ package com.appsmith.server.events;
|
|||
|
||||
import com.appsmith.server.domains.Application;
|
||||
import com.appsmith.server.domains.Workspace;
|
||||
import com.appsmith.server.dtos.UserAndPermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.WorkspaceMemberInfoDTO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -11,7 +11,7 @@ import java.util.List;
|
|||
public abstract class AbstractCommentEvent {
|
||||
private final String authorUserName;
|
||||
private final Workspace workspace;
|
||||
private final List<UserAndPermissionGroupDTO> workspaceMembers;
|
||||
private final List<WorkspaceMemberInfoDTO> workspaceMembers;
|
||||
private final Application application;
|
||||
private final String originHeader;
|
||||
private final String pageName;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package com.appsmith.server.events;
|
|||
import com.appsmith.server.domains.Application;
|
||||
import com.appsmith.server.domains.Comment;
|
||||
import com.appsmith.server.domains.Workspace;
|
||||
import com.appsmith.server.dtos.UserAndPermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.WorkspaceMemberInfoDTO;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -14,7 +14,7 @@ public class CommentAddedEvent extends AbstractCommentEvent {
|
|||
private final Comment comment;
|
||||
private final Set<String> subscribers;
|
||||
|
||||
public CommentAddedEvent(Workspace workspace, List<UserAndPermissionGroupDTO> workspaceMembers, Application application,
|
||||
public CommentAddedEvent(Workspace workspace, List<WorkspaceMemberInfoDTO> workspaceMembers, Application application,
|
||||
String originHeader, Comment comment, Set<String> subscribers, String pageName) {
|
||||
super(comment.getAuthorUsername(), workspace, workspaceMembers, application, originHeader, pageName);
|
||||
this.comment = comment;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package com.appsmith.server.events;
|
|||
import com.appsmith.server.domains.Application;
|
||||
import com.appsmith.server.domains.CommentThread;
|
||||
import com.appsmith.server.domains.Workspace;
|
||||
import com.appsmith.server.dtos.UserAndPermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.WorkspaceMemberInfoDTO;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -12,7 +12,7 @@ import java.util.List;
|
|||
public class CommentThreadClosedEvent extends AbstractCommentEvent {
|
||||
private final CommentThread commentThread;
|
||||
|
||||
public CommentThreadClosedEvent(String authorUserName, Workspace workspace, List<UserAndPermissionGroupDTO> workspaceMembers,
|
||||
public CommentThreadClosedEvent(String authorUserName, Workspace workspace, List<WorkspaceMemberInfoDTO> workspaceMembers,
|
||||
Application application, String originHeader, CommentThread commentThread,
|
||||
String pagename) {
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.appsmith.server.services.ce;
|
||||
|
||||
import com.appsmith.server.dtos.UpdatePermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.UserAndPermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.WorkspaceMemberInfoDTO;
|
||||
import com.appsmith.server.domains.User;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
|
|
@ -13,9 +13,9 @@ public interface UserWorkspaceServiceCE {
|
|||
|
||||
Mono<User> leaveWorkspace(String workspaceId);
|
||||
|
||||
Mono<UserAndPermissionGroupDTO> updatePermissionGroupForMember(String workspaceId, UpdatePermissionGroupDTO changeUserGroupDTO, String originHeader);
|
||||
Mono<WorkspaceMemberInfoDTO> updatePermissionGroupForMember(String workspaceId, UpdatePermissionGroupDTO changeUserGroupDTO, String originHeader);
|
||||
|
||||
Mono<List<UserAndPermissionGroupDTO>> getWorkspaceMembers(String workspaceId);
|
||||
Mono<List<WorkspaceMemberInfoDTO>> getWorkspaceMembers(String workspaceId);
|
||||
|
||||
Mono<Map<String, List<UserAndPermissionGroupDTO>>> getWorkspaceMembers(Set<String> workspaceIds);
|
||||
Mono<Map<String, List<WorkspaceMemberInfoDTO>>> getWorkspaceMembers(Set<String> workspaceIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import com.appsmith.server.domains.PermissionGroup;
|
|||
import com.appsmith.server.domains.User;
|
||||
import com.appsmith.server.domains.Workspace;
|
||||
import com.appsmith.server.dtos.UpdatePermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.UserAndPermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.WorkspaceMemberInfoDTO;
|
||||
import com.appsmith.server.exceptions.AppsmithError;
|
||||
import com.appsmith.server.exceptions.AppsmithException;
|
||||
import com.appsmith.server.helpers.PolicyUtils;
|
||||
|
|
@ -123,7 +123,7 @@ public class UserWorkspaceServiceCEImpl implements UserWorkspaceServiceCE {
|
|||
*/
|
||||
@Transactional
|
||||
@Override
|
||||
public Mono<UserAndPermissionGroupDTO> updatePermissionGroupForMember(String workspaceId, UpdatePermissionGroupDTO changeUserGroupDTO, String originHeader) {
|
||||
public Mono<WorkspaceMemberInfoDTO> updatePermissionGroupForMember(String workspaceId, UpdatePermissionGroupDTO changeUserGroupDTO, String originHeader) {
|
||||
if (changeUserGroupDTO.getUsername() == null) {
|
||||
return Mono.error(new AppsmithException(AppsmithError.INVALID_PARAMETER, FieldName.USERNAME));
|
||||
}
|
||||
|
|
@ -162,7 +162,7 @@ public class UserWorkspaceServiceCEImpl implements UserWorkspaceServiceCE {
|
|||
// If new permission group id is not present, just unassign old permission group and return PermissionAndGroupDTO
|
||||
if (!StringUtils.hasText(changeUserGroupDTO.getNewPermissionGroupId())) {
|
||||
return permissionGroupUnassignedMono.then(userMono)
|
||||
.map(user -> UserAndPermissionGroupDTO.builder().username(user.getUsername()).name(user.getName()).build());
|
||||
.map(user -> WorkspaceMemberInfoDTO.builder().username(user.getUsername()).name(user.getName()).build());
|
||||
}
|
||||
|
||||
// Get the new permission group
|
||||
|
|
@ -183,7 +183,7 @@ public class UserWorkspaceServiceCEImpl implements UserWorkspaceServiceCE {
|
|||
.map(pair -> {
|
||||
User user = pair.getT2();
|
||||
PermissionGroup newPermissionGroup = pair.getT1();
|
||||
return UserAndPermissionGroupDTO.builder()
|
||||
return WorkspaceMemberInfoDTO.builder()
|
||||
.username(user.getUsername())
|
||||
.name(user.getName())
|
||||
.permissionGroupName(newPermissionGroup.getName())
|
||||
|
|
@ -193,18 +193,13 @@ public class UserWorkspaceServiceCEImpl implements UserWorkspaceServiceCE {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Mono<List<UserAndPermissionGroupDTO>> getWorkspaceMembers(String workspaceId) {
|
||||
|
||||
// Read the workspace
|
||||
Mono<Workspace> workspaceMono = workspaceRepository.findById(workspaceId, AclPermission.READ_WORKSPACES)
|
||||
.switchIfEmpty(Mono.error(new AppsmithException(AppsmithError.NO_RESOURCE_FOUND, FieldName.WORKSPACE, workspaceId)));
|
||||
public Mono<List<WorkspaceMemberInfoDTO>> getWorkspaceMembers(String workspaceId) {
|
||||
|
||||
// Get default permission groups
|
||||
Flux<PermissionGroup> permissionGroupFlux = workspaceMono
|
||||
.flatMapMany(workspace -> permissionGroupService.getByDefaultWorkspace(workspace, AclPermission.READ_PERMISSION_GROUP_MEMBERS));
|
||||
Flux<PermissionGroup> permissionGroupFlux = this.getPermissionGroupsForWorkspace(workspaceId);
|
||||
|
||||
// Create a list of UserAndGroupDTO
|
||||
Mono<List<UserAndPermissionGroupDTO>> userAndPermissionGroupDTOsMono = permissionGroupFlux
|
||||
Mono<List<WorkspaceMemberInfoDTO>> userAndPermissionGroupDTOsMono = permissionGroupFlux
|
||||
.collectList()
|
||||
.map(this::mapPermissionGroupListToUserAndPermissionGroupDTOList)
|
||||
.cache();
|
||||
|
|
@ -212,7 +207,7 @@ public class UserWorkspaceServiceCEImpl implements UserWorkspaceServiceCE {
|
|||
// Create a map of User.userId to User
|
||||
Mono<Map<String, User>> userMapMono = userAndPermissionGroupDTOsMono
|
||||
.flatMapMany(Flux::fromIterable)
|
||||
.map(UserAndPermissionGroupDTO::getUserId)
|
||||
.map(WorkspaceMemberInfoDTO::getUserId)
|
||||
.collect(Collectors.toSet())
|
||||
.flatMapMany(userIds -> userRepository.findAllById(userIds))
|
||||
.collectMap(User::getId)
|
||||
|
|
@ -222,46 +217,21 @@ public class UserWorkspaceServiceCEImpl implements UserWorkspaceServiceCE {
|
|||
userAndPermissionGroupDTOsMono = userAndPermissionGroupDTOsMono
|
||||
.zipWith(userMapMono)
|
||||
.map(tuple -> {
|
||||
List<UserAndPermissionGroupDTO> userAndPermissionGroupDTOList = tuple.getT1();
|
||||
List<WorkspaceMemberInfoDTO> workspaceMemberInfoDTOList = tuple.getT1();
|
||||
Map<String, User> userMap = tuple.getT2();
|
||||
userAndPermissionGroupDTOList.forEach(userAndPermissionGroupDTO -> {
|
||||
workspaceMemberInfoDTOList.forEach(userAndPermissionGroupDTO -> {
|
||||
User user = userMap.get(userAndPermissionGroupDTO.getUserId());
|
||||
userAndPermissionGroupDTO.setName(Optional.ofNullable(user.getName()).orElse(user.computeFirstName()));
|
||||
userAndPermissionGroupDTO.setUsername(user.getUsername());
|
||||
});
|
||||
return userAndPermissionGroupDTOList;
|
||||
return workspaceMemberInfoDTOList;
|
||||
});
|
||||
|
||||
// Sort the members by permission group
|
||||
//TODO get users sorted from DB and fill in three buckets - admin, developer and viewer
|
||||
Mono<List<UserAndPermissionGroupDTO>> sortedListMono = userAndPermissionGroupDTOsMono
|
||||
Mono<List<WorkspaceMemberInfoDTO>> sortedListMono = userAndPermissionGroupDTOsMono
|
||||
.map(userAndPermissionGroupDTOS -> {
|
||||
Collections.sort(userAndPermissionGroupDTOS, new Comparator<UserAndPermissionGroupDTO>() {
|
||||
@Override
|
||||
public int compare(UserAndPermissionGroupDTO o1, UserAndPermissionGroupDTO o2) {
|
||||
int order1 = getOrder(o1.getPermissionGroupName());
|
||||
int order2 = getOrder(o2.getPermissionGroupName());
|
||||
|
||||
// Administrator > Developer > App viewer
|
||||
int permissionGroupSortOrder = order1 - order2;
|
||||
|
||||
if (permissionGroupSortOrder != 0) {
|
||||
return permissionGroupSortOrder;
|
||||
}
|
||||
|
||||
return o1.getUsername().compareTo(o2.getUsername());
|
||||
}
|
||||
|
||||
private int getOrder(String name) {
|
||||
if (name.startsWith(FieldName.ADMINISTRATOR)) {
|
||||
return 0;
|
||||
} else if (name.startsWith(FieldName.DEVELOPER)) {
|
||||
return 1;
|
||||
} else {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
});
|
||||
Collections.sort(userAndPermissionGroupDTOS, this.getWorkspaceMemberComparator());
|
||||
|
||||
return userAndPermissionGroupDTOS;
|
||||
});
|
||||
|
|
@ -270,7 +240,7 @@ public class UserWorkspaceServiceCEImpl implements UserWorkspaceServiceCE {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Mono<Map<String, List<UserAndPermissionGroupDTO>>> getWorkspaceMembers(Set<String> workspaceIds) {
|
||||
public Mono<Map<String, List<WorkspaceMemberInfoDTO>>> getWorkspaceMembers(Set<String> workspaceIds) {
|
||||
|
||||
// Get default permission groups
|
||||
Flux<PermissionGroup> permissionGroupFlux = permissionGroupService.getByDefaultWorkspaces(workspaceIds, AclPermission.READ_PERMISSION_GROUP_MEMBERS)
|
||||
|
|
@ -296,7 +266,7 @@ public class UserWorkspaceServiceCEImpl implements UserWorkspaceServiceCE {
|
|||
Flux<Map<String, Collection<PermissionGroup>>> permissionGroupsByWorkspaceFlux = permissionGroupsByWorkspacesMono
|
||||
.repeat();
|
||||
|
||||
Mono<Map<String, List<UserAndPermissionGroupDTO>>> workspaceMembersMono = permissionGroupsByWorkspacesMono
|
||||
Mono<Map<String, List<WorkspaceMemberInfoDTO>>> workspaceMembersMono = permissionGroupsByWorkspacesMono
|
||||
.flatMapMany(permissionGroupsByWorkspaces -> Flux.fromIterable(permissionGroupsByWorkspaces.keySet()))
|
||||
.zipWith(permissionGroupsByWorkspaceFlux)
|
||||
.flatMap(tuple -> {
|
||||
|
|
@ -304,17 +274,17 @@ public class UserWorkspaceServiceCEImpl implements UserWorkspaceServiceCE {
|
|||
Map<String, Collection<PermissionGroup>> collectionMap = tuple.getT2();
|
||||
List<PermissionGroup> permissionGroups = collectionMap.get(workspaceId).stream().collect(Collectors.toList());
|
||||
|
||||
Mono<List<UserAndPermissionGroupDTO>> userAndPermissionGroupDTOsMono = Mono.just(mapPermissionGroupListToUserAndPermissionGroupDTOList(permissionGroups))
|
||||
Mono<List<WorkspaceMemberInfoDTO>> userAndPermissionGroupDTOsMono = Mono.just(mapPermissionGroupListToUserAndPermissionGroupDTOList(permissionGroups))
|
||||
.zipWith(userMapMono)
|
||||
.map(tuple1 -> {
|
||||
List<UserAndPermissionGroupDTO> userAndPermissionGroupDTOList = tuple1.getT1();
|
||||
List<WorkspaceMemberInfoDTO> workspaceMemberInfoDTOList = tuple1.getT1();
|
||||
Map<String, User> userMap = tuple1.getT2();
|
||||
userAndPermissionGroupDTOList.forEach(userAndPermissionGroupDTO -> {
|
||||
workspaceMemberInfoDTOList.forEach(userAndPermissionGroupDTO -> {
|
||||
User user = userMap.get(userAndPermissionGroupDTO.getUserId());
|
||||
userAndPermissionGroupDTO.setName(Optional.ofNullable(user.getName()).orElse(user.computeFirstName()));
|
||||
userAndPermissionGroupDTO.setUsername(user.getUsername());
|
||||
});
|
||||
return userAndPermissionGroupDTOList;
|
||||
return workspaceMemberInfoDTOList;
|
||||
});
|
||||
|
||||
return Mono.zip(Mono.just(workspaceId), userAndPermissionGroupDTOsMono);
|
||||
|
|
@ -324,12 +294,12 @@ public class UserWorkspaceServiceCEImpl implements UserWorkspaceServiceCE {
|
|||
return workspaceMembersMono;
|
||||
}
|
||||
|
||||
private List<UserAndPermissionGroupDTO> mapPermissionGroupListToUserAndPermissionGroupDTOList(List<PermissionGroup> permissionGroupList) {
|
||||
private List<WorkspaceMemberInfoDTO> mapPermissionGroupListToUserAndPermissionGroupDTOList(List<PermissionGroup> permissionGroupList) {
|
||||
Set<String> userIds = new HashSet<>(); // Set of already collected users
|
||||
List<UserAndPermissionGroupDTO> userAndGroupDTOList = new ArrayList<>();
|
||||
List<WorkspaceMemberInfoDTO> userAndGroupDTOList = new ArrayList<>();
|
||||
permissionGroupList.forEach(permissionGroup -> {
|
||||
Stream.ofNullable(permissionGroup.getAssignedToUserIds()).flatMap(Collection::stream).filter(userId -> !userIds.contains(userId)).forEach(userId -> {
|
||||
userAndGroupDTOList.add(UserAndPermissionGroupDTO.builder()
|
||||
userAndGroupDTOList.add(WorkspaceMemberInfoDTO.builder()
|
||||
.userId(userId)
|
||||
.permissionGroupName(permissionGroup.getName())
|
||||
.permissionGroupId(permissionGroup.getId())
|
||||
|
|
@ -339,4 +309,42 @@ public class UserWorkspaceServiceCEImpl implements UserWorkspaceServiceCE {
|
|||
});
|
||||
return userAndGroupDTOList;
|
||||
}
|
||||
|
||||
protected Flux<PermissionGroup> getPermissionGroupsForWorkspace(String workspaceId) {
|
||||
Mono<Workspace> workspaceMono = workspaceRepository.findById(workspaceId, AclPermission.READ_WORKSPACES)
|
||||
.switchIfEmpty(Mono.error(new AppsmithException(AppsmithError.NO_RESOURCE_FOUND, FieldName.WORKSPACE, workspaceId)));
|
||||
|
||||
// Get default permission groups
|
||||
return workspaceMono
|
||||
.flatMapMany(workspace -> permissionGroupService.getByDefaultWorkspace(workspace, AclPermission.READ_PERMISSION_GROUP_MEMBERS));
|
||||
}
|
||||
|
||||
private Comparator<WorkspaceMemberInfoDTO> getWorkspaceMemberComparator() {
|
||||
return new Comparator<>() {
|
||||
@Override
|
||||
public int compare(WorkspaceMemberInfoDTO o1, WorkspaceMemberInfoDTO o2) {
|
||||
int order1 = getOrder(o1.getPermissionGroupName());
|
||||
int order2 = getOrder(o2.getPermissionGroupName());
|
||||
|
||||
// Administrator > Developer > App viewer
|
||||
int permissionGroupSortOrder = order1 - order2;
|
||||
|
||||
if (permissionGroupSortOrder != 0) {
|
||||
return permissionGroupSortOrder;
|
||||
}
|
||||
|
||||
return o1.getUsername().compareTo(o2.getUsername());
|
||||
}
|
||||
|
||||
private int getOrder(String name) {
|
||||
if (name.startsWith(FieldName.ADMINISTRATOR)) {
|
||||
return 0;
|
||||
} else if (name.startsWith(FieldName.DEVELOPER)) {
|
||||
return 1;
|
||||
} else {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import com.appsmith.server.domains.UserData;
|
|||
import com.appsmith.server.domains.Workspace;
|
||||
import com.appsmith.server.dtos.PageDTO;
|
||||
import com.appsmith.server.dtos.ReleaseNode;
|
||||
import com.appsmith.server.dtos.UserAndPermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.WorkspaceMemberInfoDTO;
|
||||
import com.appsmith.server.dtos.UserHomepageDTO;
|
||||
import com.appsmith.server.dtos.WorkspaceApplicationsDTO;
|
||||
import com.appsmith.server.exceptions.AppsmithError;
|
||||
|
|
@ -144,7 +144,7 @@ public class ApplicationFetcherCEImpl implements ApplicationFetcherCE {
|
|||
.collectList()
|
||||
.cache();
|
||||
|
||||
Mono<Map<String, List<UserAndPermissionGroupDTO>>> userAndPermissionGroupMapDTO = workspacesFromRepoFlux
|
||||
Mono<Map<String, List<WorkspaceMemberInfoDTO>>> userAndPermissionGroupMapDTO = workspacesFromRepoFlux
|
||||
.map(Workspace::getId)
|
||||
.collect(Collectors.toSet())
|
||||
.flatMap(workspaceIds -> userWorkspaceService.getWorkspaceMembers(workspaceIds));
|
||||
|
|
@ -155,7 +155,7 @@ public class ApplicationFetcherCEImpl implements ApplicationFetcherCE {
|
|||
|
||||
Map<String, Collection<Application>> applicationsCollectionByWorkspaceId = tuple.getT2();
|
||||
|
||||
Map<String, List<UserAndPermissionGroupDTO>> userAndPermissionGroupMapDTOByWorkspaceId = tuple.getT3();
|
||||
Map<String, List<WorkspaceMemberInfoDTO>> userAndPermissionGroupMapDTOByWorkspaceId = tuple.getT3();
|
||||
|
||||
List<WorkspaceApplicationsDTO> workspaceApplicationsDTOS = new ArrayList<>();
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import com.appsmith.server.domains.CommentThread;
|
|||
import com.appsmith.server.domains.GitApplicationMetadata;
|
||||
import com.appsmith.server.domains.UserRole;
|
||||
import com.appsmith.server.domains.Workspace;
|
||||
import com.appsmith.server.dtos.UserAndPermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.WorkspaceMemberInfoDTO;
|
||||
import com.appsmith.server.events.CommentAddedEvent;
|
||||
import com.appsmith.server.events.CommentThreadClosedEvent;
|
||||
import com.appsmith.server.helpers.CommentUtils;
|
||||
|
|
@ -70,7 +70,7 @@ public class EmailEventHandlerCEImpl implements EmailEventHandlerCE {
|
|||
.zipWith(userWorkspaceService.getWorkspaceMembers(objects.getT1().getWorkspaceId()))
|
||||
.map(tuple -> {
|
||||
Workspace workspace = tuple.getT1();
|
||||
List<UserAndPermissionGroupDTO> workspaceMembers = tuple.getT2();
|
||||
List<WorkspaceMemberInfoDTO> workspaceMembers = tuple.getT2();
|
||||
String pagename = objects.getT2();
|
||||
applicationEventPublisher.publishEvent(
|
||||
new CommentAddedEvent(
|
||||
|
|
@ -197,7 +197,7 @@ public class EmailEventHandlerCEImpl implements EmailEventHandlerCE {
|
|||
return emailSender.sendMail(receiverEmail, emailSubject, COMMENT_ADDED_EMAIL_TEMPLATE, templateParams);
|
||||
}
|
||||
|
||||
private Mono<Boolean> getAddCommentEmailSenderMono(UserAndPermissionGroupDTO userAndGroupDTO, Comment comment, String originHeader,
|
||||
private Mono<Boolean> getAddCommentEmailSenderMono(WorkspaceMemberInfoDTO userAndGroupDTO, Comment comment, String originHeader,
|
||||
Application application, String pagename) {
|
||||
String receiverName = StringUtils.isEmpty(userAndGroupDTO.getName()) ? "User" : userAndGroupDTO.getName();
|
||||
String receiverEmail = userAndGroupDTO.getUsername();
|
||||
|
|
@ -261,12 +261,12 @@ public class EmailEventHandlerCEImpl implements EmailEventHandlerCE {
|
|||
);
|
||||
}
|
||||
|
||||
private Mono<Boolean> sendEmailForCommentAdded(Workspace workspace, List<UserAndPermissionGroupDTO> workspaceMembers,
|
||||
private Mono<Boolean> sendEmailForCommentAdded(Workspace workspace, List<WorkspaceMemberInfoDTO> workspaceMembers,
|
||||
Application application, Comment comment, String originHeader,
|
||||
Set<String> subscribers, String pagename) {
|
||||
|
||||
List<Mono<Boolean>> emailMonos = new ArrayList<>();
|
||||
for (UserAndPermissionGroupDTO user : workspaceMembers) {
|
||||
for (WorkspaceMemberInfoDTO user : workspaceMembers) {
|
||||
if(!comment.getAuthorUsername().equals(user.getUsername()) && subscribers.contains(user.getUsername())) {
|
||||
emailMonos.add(getAddCommentEmailSenderMono(user, comment, originHeader, application, pagename));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import com.appsmith.server.domains.User;
|
|||
import com.appsmith.server.domains.UserRole;
|
||||
import com.appsmith.server.domains.Workspace;
|
||||
import com.appsmith.server.dtos.UpdatePermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.UserAndPermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.WorkspaceMemberInfoDTO;
|
||||
import com.appsmith.server.exceptions.AppsmithError;
|
||||
import com.appsmith.server.helpers.PolicyUtils;
|
||||
import com.appsmith.server.repositories.ApplicationRepository;
|
||||
|
|
@ -162,7 +162,7 @@ public class UserWorkspaceServiceTest {
|
|||
|
||||
Set<String> uniqueUsersInWorkspaceBefore = userWorkspaceService.getWorkspaceMembers(workspace.getId())
|
||||
.flatMapMany(workspaceMembers -> Flux.fromIterable(workspaceMembers))
|
||||
.map(UserAndPermissionGroupDTO::getUserId)
|
||||
.map(WorkspaceMemberInfoDTO::getUserId)
|
||||
.collect(Collectors.toSet())
|
||||
.block();
|
||||
|
||||
|
|
@ -245,7 +245,7 @@ public class UserWorkspaceServiceTest {
|
|||
updatePermissionGroupDTO.setNewPermissionGroupId(developerPermissionGroup.getId());
|
||||
String origin = "http://random-origin.test";
|
||||
|
||||
Mono<UserAndPermissionGroupDTO> updateUserRoleMono = userWorkspaceService.updatePermissionGroupForMember(workspace.getId(), updatePermissionGroupDTO, origin);
|
||||
Mono<WorkspaceMemberInfoDTO> updateUserRoleMono = userWorkspaceService.updatePermissionGroupForMember(workspace.getId(), updatePermissionGroupDTO, origin);
|
||||
|
||||
StepVerifier.create(updateUserRoleMono).expectErrorMessage(
|
||||
AppsmithError.REMOVE_LAST_WORKSPACE_ADMIN_ERROR.getMessage()
|
||||
|
|
@ -285,7 +285,7 @@ public class UserWorkspaceServiceTest {
|
|||
updatePermissionGroupDTO.setNewPermissionGroupId(developerPermissionGroup.getId());
|
||||
String origin = "http://random-origin.test";
|
||||
|
||||
Mono<UserAndPermissionGroupDTO> updateUserRoleMono = userWorkspaceService.updatePermissionGroupForMember(workspace.getId(), updatePermissionGroupDTO, origin);
|
||||
Mono<WorkspaceMemberInfoDTO> updateUserRoleMono = userWorkspaceService.updatePermissionGroupForMember(workspace.getId(), updatePermissionGroupDTO, origin);
|
||||
|
||||
StepVerifier.create(updateUserRoleMono)
|
||||
.assertNext(userRole1 -> {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import com.appsmith.server.constants.FieldName;
|
|||
import com.appsmith.server.domains.PermissionGroup;
|
||||
import com.appsmith.server.domains.Workspace;
|
||||
import com.appsmith.server.dtos.PermissionGroupInfoDTO;
|
||||
import com.appsmith.server.dtos.UserAndPermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.WorkspaceMemberInfoDTO;
|
||||
import com.appsmith.server.exceptions.AppsmithError;
|
||||
import com.appsmith.server.helpers.PolicyUtils;
|
||||
import com.appsmith.server.notifications.EmailSender;
|
||||
|
|
@ -127,7 +127,7 @@ public class UserWorkspaceServiceUnitTest {
|
|||
Mockito.when(userRepository.findAllById(ArgumentMatchers.<Iterable<String>>any()))
|
||||
.thenReturn(Flux.empty());
|
||||
|
||||
Mono<List<UserAndPermissionGroupDTO>> workspaceMembers = userWorkspaceService.getWorkspaceMembers(testWorkspace.getId());
|
||||
Mono<List<WorkspaceMemberInfoDTO>> workspaceMembers = userWorkspaceService.getWorkspaceMembers(testWorkspace.getId());
|
||||
StepVerifier
|
||||
.create(workspaceMembers)
|
||||
.assertNext(userAndGroupDTOs -> {
|
||||
|
|
@ -147,7 +147,7 @@ public class UserWorkspaceServiceUnitTest {
|
|||
Mockito.when(userRepository.findAllById(ArgumentMatchers.<Iterable<String>>any()))
|
||||
.thenReturn(Flux.empty());
|
||||
|
||||
Mono<List<UserAndPermissionGroupDTO>> workspaceMembers = userWorkspaceService.getWorkspaceMembers(sampleWorkspaceId);
|
||||
Mono<List<WorkspaceMemberInfoDTO>> workspaceMembers = userWorkspaceService.getWorkspaceMembers(sampleWorkspaceId);
|
||||
StepVerifier
|
||||
.create(workspaceMembers)
|
||||
.expectErrorMessage(AppsmithError.NO_RESOURCE_FOUND.getMessage(FieldName.WORKSPACE, sampleWorkspaceId))
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import com.appsmith.server.domains.User;
|
|||
import com.appsmith.server.domains.Workspace;
|
||||
import com.appsmith.server.dtos.InviteUsersDTO;
|
||||
import com.appsmith.server.dtos.PermissionGroupInfoDTO;
|
||||
import com.appsmith.server.dtos.UserAndPermissionGroupDTO;
|
||||
import com.appsmith.server.dtos.WorkspaceMemberInfoDTO;
|
||||
import com.appsmith.server.exceptions.AppsmithError;
|
||||
import com.appsmith.server.exceptions.AppsmithException;
|
||||
import com.appsmith.server.helpers.TextUtils;
|
||||
|
|
@ -751,7 +751,7 @@ public class WorkspaceServiceTest {
|
|||
inviteUsersDTO.setPermissionGroupId(viewerPermissionGroupId);
|
||||
userAndAccessManagementService.inviteUsers(inviteUsersDTO, origin).block();
|
||||
|
||||
Mono<List<UserAndPermissionGroupDTO>> usersMono = userWorkspaceService.getWorkspaceMembers(createdWorkspace.getId());
|
||||
Mono<List<WorkspaceMemberInfoDTO>> usersMono = userWorkspaceService.getWorkspaceMembers(createdWorkspace.getId());
|
||||
|
||||
StepVerifier
|
||||
.create(usersMono)
|
||||
|
|
@ -759,7 +759,7 @@ public class WorkspaceServiceTest {
|
|||
assertThat(users).isNotNull();
|
||||
assertThat(users.size()).isEqualTo(6);
|
||||
// Assert that the members are sorted by the permission group and then email
|
||||
UserAndPermissionGroupDTO userAndGroupDTO = users.get(0);
|
||||
WorkspaceMemberInfoDTO userAndGroupDTO = users.get(0);
|
||||
assertThat(userAndGroupDTO.getUsername()).isEqualTo("api_user");
|
||||
assertThat(userAndGroupDTO.getPermissionGroupName()).startsWith(ADMINISTRATOR);
|
||||
userAndGroupDTO = users.get(1);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user