### Summary This pull request addresses the issue described in #9232, where attempting to delete a user account results in a `TypeError: Cannot read properties of undefined (reading 'dataSourceService')`. ### Changes Made - Fixed the `this` context issue in the `deleteUserFromWorkspace` method by ensuring it is correctly bound. - Updated the `deleteUser` method to use a bound function when calling `deleteUserFromWorkspace`. ### Linked Issue This pull request fixes #9232. ### Additional Notes - Please review the changes carefully to ensure no unintended side effects in the user or workspace deletion process. - Suggestions for further improvement are welcome. --------- Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com> Co-authored-by: Weiko <corentin@twenty.com>
This commit is contained in:
@ -96,14 +96,14 @@ export class UserService extends TypeOrmQueryService<User> {
|
|||||||
|
|
||||||
assert(workspaceMember, 'WorkspaceMember not found');
|
assert(workspaceMember, 'WorkspaceMember not found');
|
||||||
|
|
||||||
if (workspaceMembers.length === 1) {
|
|
||||||
await this.workspaceService.deleteWorkspace(workspaceId);
|
|
||||||
}
|
|
||||||
|
|
||||||
await workspaceDataSource?.query(
|
await workspaceDataSource?.query(
|
||||||
`DELETE FROM ${dataSourceMetadata.schema}."workspaceMember" WHERE "userId" = '${userId}'`,
|
`DELETE FROM ${dataSourceMetadata.schema}."workspaceMember" WHERE "userId" = '${userId}'`,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (workspaceMembers.length === 1) {
|
||||||
|
await this.workspaceService.deleteWorkspace(workspaceId);
|
||||||
|
}
|
||||||
|
|
||||||
const objectMetadata = await this.objectMetadataRepository.findOneOrFail({
|
const objectMetadata = await this.objectMetadataRepository.findOneOrFail({
|
||||||
where: {
|
where: {
|
||||||
nameSingular: 'workspaceMember',
|
nameSingular: 'workspaceMember',
|
||||||
@ -136,7 +136,9 @@ export class UserService extends TypeOrmQueryService<User> {
|
|||||||
|
|
||||||
userValidator.assertIsDefinedOrThrow(user);
|
userValidator.assertIsDefinedOrThrow(user);
|
||||||
|
|
||||||
await Promise.all(user.workspaces.map(this.deleteUserFromWorkspace));
|
await Promise.all(
|
||||||
|
user.workspaces.map(this.deleteUserFromWorkspace.bind(this)),
|
||||||
|
);
|
||||||
|
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user