fix(server): handle hanging workspace after user account deleted (#8377)
fix CLOUD-74
This commit is contained in:
@@ -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],
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user