mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-15 18:27:05 +00:00
Remove invitationCode from unique constraint and update invite user logic
This commit is contained in:
@ -287,13 +287,12 @@ export class InviteUserService {
|
||||
// Update invited user and associated user data
|
||||
await this.inviteUserRepository.update(
|
||||
{ uuid: invitedUser.uuid },
|
||||
{ status: UserStatusEnum.ACTIVE },
|
||||
{ status: UserStatusEnum.ACTIVE, user: { uuid: user.uuid } },
|
||||
);
|
||||
await this.userRepository.update(
|
||||
{ uuid: user.uuid },
|
||||
{
|
||||
project: { uuid: invitedUser.project.uuid },
|
||||
inviteUser: { uuid: invitedUser.uuid },
|
||||
roleType: { uuid: invitedUser.roleType.uuid },
|
||||
},
|
||||
);
|
||||
@ -460,12 +459,12 @@ export class InviteUserService {
|
||||
projectUuid,
|
||||
} = dto;
|
||||
|
||||
const user = await this.userRepository.findOne({
|
||||
where: { inviteUser: { uuid: invitedUserUuid } },
|
||||
relations: ['userSpaces.space', 'userSpaces.space.community'],
|
||||
const userData = await this.inviteUserRepository.findOne({
|
||||
where: { uuid: invitedUserUuid },
|
||||
relations: ['user.userSpaces.space', 'user.userSpaces.space.community'],
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
if (!userData) {
|
||||
throw new HttpException(
|
||||
`User with invitedUserUuid ${invitedUserUuid} not found`,
|
||||
HttpStatus.NOT_FOUND,
|
||||
@ -486,12 +485,12 @@ export class InviteUserService {
|
||||
);
|
||||
|
||||
// Disassociate the user from all current spaces
|
||||
const disassociatePromises = user.userSpaces.map((userSpace) =>
|
||||
const disassociatePromises = userData.user.userSpaces.map((userSpace) =>
|
||||
this.spaceUserService
|
||||
.disassociateUserFromSpace({
|
||||
communityUuid: userSpace.space.community.uuid,
|
||||
spaceUuid: userSpace.space.uuid,
|
||||
userUuid: user.uuid,
|
||||
userUuid: userData.user.uuid,
|
||||
projectUuid,
|
||||
})
|
||||
.catch((error) => {
|
||||
@ -517,7 +516,7 @@ export class InviteUserService {
|
||||
|
||||
// Grant permissions to the user for all devices in the space
|
||||
await this.userSpaceService.addUserPermissionsToDevices(
|
||||
user.uuid,
|
||||
userData.user.uuid,
|
||||
deviceUUIDs,
|
||||
);
|
||||
|
||||
@ -525,7 +524,7 @@ export class InviteUserService {
|
||||
await this.spaceUserService.associateUserToSpace({
|
||||
communityUuid: spaceDetails.communityUuid,
|
||||
spaceUuid: spaceUuid,
|
||||
userUuid: user.uuid,
|
||||
userUuid: userData.user.uuid,
|
||||
projectUuid,
|
||||
});
|
||||
} catch (error) {
|
||||
@ -584,30 +583,36 @@ export class InviteUserService {
|
||||
}
|
||||
|
||||
if (userData.status === UserStatusEnum.INVITED) {
|
||||
await this.updateUserStatus(invitedUserUuid, projectUuid, disable);
|
||||
await this.updateUserStatus(invitedUserUuid, projectUuid, !disable);
|
||||
} else if (userData.status === UserStatusEnum.ACTIVE) {
|
||||
const user = await this.userRepository.findOne({
|
||||
where: { inviteUser: { uuid: invitedUserUuid } },
|
||||
relations: ['userSpaces.space', 'userSpaces.space.community'],
|
||||
const invitedUserData = await this.inviteUserRepository.findOne({
|
||||
where: { uuid: invitedUserUuid },
|
||||
relations: [
|
||||
'user.userSpaces.space',
|
||||
'user.userSpaces.space.community',
|
||||
],
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
if (!invitedUserData.user) {
|
||||
throw new HttpException(
|
||||
'User account not found',
|
||||
HttpStatus.NOT_FOUND,
|
||||
);
|
||||
}
|
||||
|
||||
if (!disable) {
|
||||
await this.disassociateUserFromSpaces(user, projectUuid);
|
||||
await this.updateUserStatus(invitedUserUuid, projectUuid, disable);
|
||||
} else if (disable) {
|
||||
if (disable) {
|
||||
await this.disassociateUserFromSpaces(
|
||||
invitedUserData.user,
|
||||
projectUuid,
|
||||
);
|
||||
await this.updateUserStatus(invitedUserUuid, projectUuid, !disable);
|
||||
} else if (!disable) {
|
||||
await this.associateUserToSpaces(
|
||||
user,
|
||||
invitedUserData.user,
|
||||
userData,
|
||||
projectUuid,
|
||||
invitedUserUuid,
|
||||
disable,
|
||||
!disable,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
@ -640,11 +645,11 @@ export class InviteUserService {
|
||||
private async updateUserStatus(
|
||||
invitedUserUuid: string,
|
||||
projectUuid: string,
|
||||
disable: boolean,
|
||||
isEnabled: boolean,
|
||||
) {
|
||||
await this.inviteUserRepository.update(
|
||||
{ uuid: invitedUserUuid, project: { uuid: projectUuid } },
|
||||
{ isEnabled: disable },
|
||||
{ isEnabled },
|
||||
);
|
||||
}
|
||||
|
||||
@ -727,25 +732,31 @@ export class InviteUserService {
|
||||
{ isActive: false },
|
||||
);
|
||||
} else if (userData.status === UserStatusEnum.ACTIVE) {
|
||||
const user = await this.userRepository.findOne({
|
||||
where: { inviteUser: { uuid: invitedUserUuid } },
|
||||
relations: ['userSpaces.space', 'userSpaces.space.community'],
|
||||
const invitedUserData = await this.inviteUserRepository.findOne({
|
||||
where: { uuid: invitedUserUuid },
|
||||
relations: [
|
||||
'user.userSpaces.space',
|
||||
'user.userSpaces.space.community',
|
||||
],
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
if (!invitedUserData.user) {
|
||||
throw new HttpException(
|
||||
'User account not found',
|
||||
HttpStatus.NOT_FOUND,
|
||||
);
|
||||
}
|
||||
|
||||
await this.disassociateUserFromSpaces(user, userData.project.uuid);
|
||||
await this.disassociateUserFromSpaces(
|
||||
invitedUserData.user,
|
||||
userData.project.uuid,
|
||||
);
|
||||
await this.inviteUserRepository.update(
|
||||
{ uuid: invitedUserUuid },
|
||||
{ isActive: false },
|
||||
);
|
||||
await this.userRepository.update(
|
||||
{ uuid: user.uuid },
|
||||
{ uuid: invitedUserData.user.uuid },
|
||||
{ isActive: false },
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user