diff --git a/backend/src/entities/group/use-cases/remove-user-from-group.use.case.ts b/backend/src/entities/group/use-cases/remove-user-from-group.use.case.ts index 20719b18a..d7be2beae 100644 --- a/backend/src/entities/group/use-cases/remove-user-from-group.use.case.ts +++ b/backend/src/entities/group/use-cases/remove-user-from-group.use.case.ts @@ -23,7 +23,7 @@ export class RemoveUserFromGroupUseCase protected async implementation(inputData: AddUserInGroupDs): Promise { const { groupId } = inputData; const email = inputData.email.toLowerCase(); - const foundUser = await this._dbContext.userRepository.findOneUserByEmail(email); + const foundUser = await this._dbContext.userRepository.findOneUserByEmailAndGroupId(email, groupId); if (!foundUser) { throw new HttpException( { @@ -47,6 +47,14 @@ export class RemoveUserFromGroupUseCase return e.id; }) .indexOf(foundUser.id); + if (delIndex === -1) { + throw new HttpException( + { + message: Messages.USER_NOT_FOUND, + }, + HttpStatus.NOT_FOUND, + ); + } groupToUpdate.users.splice(delIndex, 1); const updatedGroup = await this._dbContext.groupRepository.saveNewOrUpdatedGroup(groupToUpdate); return buildRemoveUserFromGroupResultDs(updatedGroup); diff --git a/backend/src/entities/user/repository/user-custom-repository-extension.ts b/backend/src/entities/user/repository/user-custom-repository-extension.ts index 1338949d9..74fb251ee 100644 --- a/backend/src/entities/user/repository/user-custom-repository-extension.ts +++ b/backend/src/entities/user/repository/user-custom-repository-extension.ts @@ -59,6 +59,14 @@ export const userCustomRepositoryExtension: IUserRepository = { return userQb.getOne(); }, + async findOneUserByEmailAndGroupId(email: string, groupId: string): Promise { + const userQb = this.createQueryBuilder('user') + .leftJoinAndSelect('user.groups', 'group') + .where('user.email = :userEmail', { userEmail: email?.toLowerCase() }) + .andWhere('group.id = :groupId', { groupId: groupId }); + return await userQb.getOne(); + }, + async findOneUserWithEmailVerification(userId: string): Promise { const usersQb = this.createQueryBuilder('user') .leftJoinAndSelect('user.email_verification', 'email_verification') diff --git a/backend/src/entities/user/repository/user.repository.interface.ts b/backend/src/entities/user/repository/user.repository.interface.ts index 90f32192c..cc388fb27 100644 --- a/backend/src/entities/user/repository/user.repository.interface.ts +++ b/backend/src/entities/user/repository/user.repository.interface.ts @@ -57,4 +57,6 @@ export interface IUserRepository { unSuspendUsers(userIds: Array): Promise>; bulkSaveUpdatedUsers(updatedUsers: Array): Promise>; + + findOneUserByEmailAndGroupId(email: string, groupId: string): Promise; }