chore: refactor workspace members api (#17891)

This commit is contained in:
Nilesh Sarupriya 2022-10-27 11:56:08 +05:30 committed by GitHub
parent f91fe64dd8
commit 3ee6572f77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 114 additions and 96 deletions

View File

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

View File

@ -16,5 +16,5 @@ import java.util.List;
public class WorkspaceApplicationsDTO {
Workspace workspace;
List<Application> applications;
List<UserAndPermissionGroupDTO> users;
List<WorkspaceMemberInfoDTO> users;
}

View File

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

View File

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

View File

@ -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;

View File

@ -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;

View File

@ -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) {

View File

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

View File

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

View File

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

View File

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

View File

@ -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 -> {

View File

@ -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))

View File

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