diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-14 17:38:16 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-14 17:38:16 +0900 |
| commit | 76c049522e2fb506915f9fad0cd763236245f45c (patch) | |
| tree | 32a19e1239698d01a3571508e8fcd87c78597398 /packages/backend/src/server/api/endpoints/users | |
| parent | refactor(client): use css modules (diff) | |
| download | sharkey-76c049522e2fb506915f9fad0cd763236245f45c.tar.gz sharkey-76c049522e2fb506915f9fad0cd763236245f45c.tar.bz2 sharkey-76c049522e2fb506915f9fad0cd763236245f45c.zip | |
enhance: ユーザーリストおよびユーザーリスト内のユーザーの作成可能数を設定可能に
Diffstat (limited to 'packages/backend/src/server/api/endpoints/users')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/users/lists/create.ts | 18 | ||||
| -rw-r--r-- | packages/backend/src/server/api/endpoints/users/lists/push.ts | 2 |
2 files changed, 19 insertions, 1 deletions
diff --git a/packages/backend/src/server/api/endpoints/users/lists/create.ts b/packages/backend/src/server/api/endpoints/users/lists/create.ts index 99f0751ea8..810c9909b2 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/create.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/create.ts @@ -5,6 +5,8 @@ import type { UserList } from '@/models/entities/UserList.js'; import { Endpoint } from '@/server/api/endpoint-base.js'; import { UserListEntityService } from '@/core/entities/UserListEntityService.js'; import { DI } from '@/di-symbols.js'; +import { ApiError } from '@/server/api/error'; +import { RoleService } from '@/core/RoleService.js'; export const meta = { tags: ['lists'], @@ -20,6 +22,14 @@ export const meta = { optional: false, nullable: false, ref: 'UserList', }, + + errors: { + tooManyUserLists: { + message: 'You cannot create user list any more.', + code: 'TOO_MANY_USERLISTS', + id: '0cf21a28-7715-4f39-a20d-777bfdb8d138', + }, + }, } as const; export const paramDef = { @@ -39,8 +49,16 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { private userListEntityService: UserListEntityService, private idService: IdService, + private roleService: RoleService, ) { super(meta, paramDef, async (ps, me) => { + const currentCount = await this.userListsRepository.countBy({ + userId: me.id, + }); + if (currentCount > (await this.roleService.getUserRoleOptions(me.id)).userListLimit) { + throw new ApiError(meta.errors.tooManyUserLists); + } + const userList = await this.userListsRepository.insert({ id: this.idService.genId(), createdAt: new Date(), diff --git a/packages/backend/src/server/api/endpoints/users/lists/push.ts b/packages/backend/src/server/api/endpoints/users/lists/push.ts index 96be7e11e8..3a079ee1ab 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/push.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/push.ts @@ -111,7 +111,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { } // Push the user - await this.userListService.push(user, userList); + await this.userListService.push(user, userList, me); }); } } |