refactor(server): use workspace model on user model (#9726)
This commit is contained in:
@@ -5,8 +5,9 @@ import ava, { TestFn } from 'ava';
|
|||||||
import Sinon from 'sinon';
|
import Sinon from 'sinon';
|
||||||
|
|
||||||
import { EmailAlreadyUsed } from '../../base';
|
import { EmailAlreadyUsed } from '../../base';
|
||||||
import { Permission } from '../../core/permission';
|
import { Permission } from '../../models/common';
|
||||||
import { UserModel } from '../../models/user';
|
import { UserModel } from '../../models/user';
|
||||||
|
import { WorkspaceMemberStatus } from '../../models/workspace';
|
||||||
import { createTestingModule, initTestingDB } from '../utils';
|
import { createTestingModule, initTestingDB } from '../utils';
|
||||||
|
|
||||||
interface Context {
|
interface Context {
|
||||||
@@ -264,6 +265,7 @@ test('should trigger user.deleted event', async t => {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
type: Permission.Owner,
|
type: Permission.Owner,
|
||||||
|
status: WorkspaceMemberStatus.Accepted,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { Prisma, type User, Workspace } from '@prisma/client';
|
import { Prisma, type User } from '@prisma/client';
|
||||||
import { pick } from 'lodash-es';
|
import { pick } from 'lodash-es';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@@ -12,9 +12,9 @@ import {
|
|||||||
WrongSignInMethod,
|
WrongSignInMethod,
|
||||||
} from '../base';
|
} from '../base';
|
||||||
import type { Payload } from '../base/event/def';
|
import type { Payload } from '../base/event/def';
|
||||||
import { Permission } from '../core/permission';
|
|
||||||
import { Quota_FreePlanV1_1 } from '../core/quota/schema';
|
import { Quota_FreePlanV1_1 } from '../core/quota/schema';
|
||||||
import { BaseModel } from './base';
|
import { BaseModel } from './base';
|
||||||
|
import type { Workspace } from './workspace';
|
||||||
|
|
||||||
const publicUserSelect = {
|
const publicUserSelect = {
|
||||||
id: true,
|
id: true,
|
||||||
@@ -219,18 +219,12 @@ export class UserModel extends BaseModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async delete(id: string) {
|
async delete(id: string) {
|
||||||
const ownedWorkspaces = await this.db.workspaceUserPermission.findMany({
|
const ownedWorkspaceIds = await this.models.workspace.findOwnedIds(id);
|
||||||
where: {
|
|
||||||
userId: id,
|
|
||||||
type: Permission.Owner,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const user = await this.db.user.delete({ where: { id } });
|
const user = await this.db.user.delete({ where: { id } });
|
||||||
|
|
||||||
this.event.emit('user.deleted', {
|
this.event.emit('user.deleted', {
|
||||||
...user,
|
...user,
|
||||||
ownedWorkspaces: ownedWorkspaces.map(w => w.workspaceId),
|
ownedWorkspaces: ownedWorkspaceIds,
|
||||||
});
|
});
|
||||||
|
|
||||||
return user;
|
return user;
|
||||||
|
|||||||
Reference in New Issue
Block a user