fix(server): handle hanging workspace after user account deleted (#8377)

fix CLOUD-74
This commit is contained in:
forehalo
2024-09-25 06:16:32 +00:00
parent d0050a268a
commit 1d75d97a8f
6 changed files with 43 additions and 16 deletions

View File

@@ -1,12 +1,13 @@
import { Module } from '@nestjs/common';
import { PermissionModule } from '../permission';
import { StorageModule } from '../storage';
import { UserAvatarController } from './controller';
import { UserManagementResolver, UserResolver } from './resolver';
import { UserService } from './service';
@Module({
imports: [StorageModule],
imports: [StorageModule, PermissionModule],
providers: [UserResolver, UserService, UserManagementResolver],
controllers: [UserAvatarController],
exports: [UserService],

View File

@@ -11,6 +11,7 @@ import {
WrongSignInCredentials,
WrongSignInMethod,
} from '../../fundamentals';
import { PermissionService } from '../permission';
import { Quota_FreePlanV1_1 } from '../quota/schema';
import { validators } from '../utils/validators';
@@ -34,7 +35,8 @@ export class UserService {
private readonly config: Config,
private readonly crypto: CryptoHelper,
private readonly prisma: PrismaClient,
private readonly emitter: EventEmitter
private readonly emitter: EventEmitter,
private readonly permission: PermissionService
) {}
get userCreatingData() {
@@ -276,12 +278,13 @@ export class UserService {
}
async deleteUser(id: string) {
const ownedWorkspaces = await this.permission.getOwnedWorkspaces(id);
const user = await this.prisma.user.delete({ where: { id } });
this.emitter.emit('user.deleted', user);
this.emitter.emit('user.deleted', { ...user, ownedWorkspaces });
}
@OnEvent('user.updated')
async onUserUpdated(user: EventPayload<'user.deleted'>) {
async onUserUpdated(user: EventPayload<'user.updated'>) {
const { enabled, customerIo } = this.config.metrics;
if (enabled && customerIo?.token) {
const payload = {