Fix workspace/user deletion (#2648)

* Fix workspace/user deletion

* remove logs

* add defaultWorkspace check
This commit is contained in:
Weiko
2023-11-22 17:12:46 +01:00
committed by GitHub
parent ac2fedb148
commit ccaa96bc58
12 changed files with 90 additions and 19 deletions

View File

@ -70,16 +70,14 @@ export class UserService extends TypeOrmQueryService<User> {
);
}
async deleteUser({
workspaceId: _workspaceId,
userId,
}: {
workspaceId: string;
userId: string;
}) {
const user = await this.userRepository.findBy({ id: userId });
async deleteUser(userId: string): Promise<User> {
const user = await this.userRepository.findOneBy({
id: userId,
});
assert(user, 'User not found');
await this.userRepository.delete(user.id);
return user;
}
}

View File

@ -63,10 +63,14 @@ export class User {
deletedAt: Date;
@Field(() => Workspace, { nullable: false })
@ManyToOne(() => Workspace, (workspace) => workspace.users)
@ManyToOne(() => Workspace, (workspace) => workspace.users, {
onDelete: 'SET NULL',
})
defaultWorkspace: Workspace;
@OneToMany(() => RefreshToken, (refreshToken) => refreshToken.user)
@OneToMany(() => RefreshToken, (refreshToken) => refreshToken.user, {
cascade: true,
})
refreshTokens: RefreshToken[];
@Field(() => UserWorkspaceMember, { nullable: false })

View File

@ -19,11 +19,9 @@ import { AuthUser } from 'src/decorators/auth-user.decorator';
import { EnvironmentService } from 'src/integrations/environment/environment.service';
import { streamToBuffer } from 'src/utils/stream-to-buffer';
import { FileUploadService } from 'src/core/file/services/file-upload.service';
import { AuthWorkspace } from 'src/decorators/auth-workspace.decorator';
import { assert } from 'src/utils/assert';
import { JwtAuthGuard } from 'src/guards/jwt.auth.guard';
import { User } from 'src/core/user/user.entity';
import { Workspace } from 'src/core/workspace/workspace.entity';
import { UserWorkspaceMember } from 'src/core/user/dtos/workspace-member.dto';
import { UserService } from './services/user.service';
@ -96,10 +94,7 @@ export class UserResolver {
}
@Mutation(() => User)
async deleteUser(
@AuthUser() { id: userId }: User,
@AuthWorkspace() { id: workspaceId }: Workspace,
) {
return this.userService.deleteUser({ userId, workspaceId });
async deleteUser(@AuthUser() { id: userId }: User) {
return this.userService.deleteUser(userId);
}
}