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/core | |
| parent | refactor(client): use css modules (diff) | |
| download | misskey-76c049522e2fb506915f9fad0cd763236245f45c.tar.gz misskey-76c049522e2fb506915f9fad0cd763236245f45c.tar.bz2 misskey-76c049522e2fb506915f9fad0cd763236245f45c.zip | |
enhance: ユーザーリストおよびユーザーリスト内のユーザーの作成可能数を設定可能に
Diffstat (limited to 'packages/backend/src/core')
| -rw-r--r-- | packages/backend/src/core/RoleService.ts | 6 | ||||
| -rw-r--r-- | packages/backend/src/core/UserListService.ts | 11 |
2 files changed, 16 insertions, 1 deletions
diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts index 39413e2a55..0ddcb44ca1 100644 --- a/packages/backend/src/core/RoleService.ts +++ b/packages/backend/src/core/RoleService.ts @@ -25,6 +25,8 @@ export type RoleOptions = { webhookLimit: number; clipLimit: number; noteEachClipsLimit: number; + userListLimit: number; + userEachUserListsLimit: number; }; export const DEFAULT_ROLE: RoleOptions = { @@ -39,6 +41,8 @@ export const DEFAULT_ROLE: RoleOptions = { webhookLimit: 3, clipLimit: 10, noteEachClipsLimit: 200, + userListLimit: 10, + userEachUserListsLimit: 50, }; @Injectable() @@ -212,6 +216,8 @@ export class RoleService implements OnApplicationShutdown { webhookLimit: Math.max(...getOptionValues('webhookLimit')), clipLimit: Math.max(...getOptionValues('clipLimit')), noteEachClipsLimit: Math.max(...getOptionValues('noteEachClipsLimit')), + userListLimit: Math.max(...getOptionValues('userListLimit')), + userEachUserListsLimit: Math.max(...getOptionValues('userEachUserListsLimit')), }; } diff --git a/packages/backend/src/core/UserListService.ts b/packages/backend/src/core/UserListService.ts index 054387ff8e..18c9787fa8 100644 --- a/packages/backend/src/core/UserListService.ts +++ b/packages/backend/src/core/UserListService.ts @@ -10,6 +10,7 @@ import { DI } from '@/di-symbols.js'; import { UserEntityService } from '@/core/entities/UserEntityService.js'; import { ProxyAccountService } from '@/core/ProxyAccountService.js'; import { bindThis } from '@/decorators.js'; +import { RoleService } from '@/core/RoleService.js'; @Injectable() export class UserListService { @@ -23,13 +24,21 @@ export class UserListService { private userEntityService: UserEntityService, private idService: IdService, private userFollowingService: UserFollowingService, + private roleService: RoleService, private globalEventServie: GlobalEventService, private proxyAccountService: ProxyAccountService, ) { } @bindThis - public async push(target: User, list: UserList) { + public async push(target: User, list: UserList, me: User) { + const currentCount = await this.userListJoiningsRepository.countBy({ + userListId: list.id, + }); + if (currentCount > (await this.roleService.getUserRoleOptions(me.id)).userEachUserListsLimit) { + throw new Error('Too many users'); + } + await this.userListJoiningsRepository.insert({ id: this.idService.genId(), createdAt: new Date(), |