diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-14 10:48:11 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-14 10:48:11 +0900 |
| commit | bcb5182e8686dcb517defe56a18324fb0ec72027 (patch) | |
| tree | 960207df78c2b5ddbff0a30dfcdcd631a54256dc /packages/backend/src/server/api/endpoints/i/webhooks | |
| parent | fix (diff) | |
| download | sharkey-bcb5182e8686dcb517defe56a18324fb0ec72027.tar.gz sharkey-bcb5182e8686dcb517defe56a18324fb0ec72027.tar.bz2 sharkey-bcb5182e8686dcb517defe56a18324fb0ec72027.zip | |
Webhookの作成可能数を設定可能に
Diffstat (limited to 'packages/backend/src/server/api/endpoints/i/webhooks')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/i/webhooks/create.ts | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/packages/backend/src/server/api/endpoints/i/webhooks/create.ts b/packages/backend/src/server/api/endpoints/i/webhooks/create.ts index 584c2ba6a4..45cfd8161c 100644 --- a/packages/backend/src/server/api/endpoints/i/webhooks/create.ts +++ b/packages/backend/src/server/api/endpoints/i/webhooks/create.ts @@ -5,6 +5,7 @@ import type { WebhooksRepository } from '@/models/index.js'; import { webhookEventTypes } from '@/models/entities/Webhook.js'; import { GlobalEventService } from '@/core/GlobalEventService.js'; import { DI } from '@/di-symbols.js'; +import { RoleService } from '@/core/RoleService.js'; export const meta = { tags: ['webhooks'], @@ -12,6 +13,14 @@ export const meta = { requireCredential: true, kind: 'write:account', + + errors: { + tooManyWebhooks: { + message: 'You cannot create webhook any more.', + code: 'TOO_MANY_WEBHOOKS', + id: '87a9bb19-111e-4e37-81d3-a3e7426453b0', + }, + }, } as const; export const paramDef = { @@ -38,8 +47,16 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { private idService: IdService, private globalEventService: GlobalEventService, + private roleService: RoleService, ) { super(meta, paramDef, async (ps, me) => { + const currentWebhooksCount = await this.webhooksRepository.countBy({ + userId: me.id, + }); + if (currentWebhooksCount > (await this.roleService.getUserRoleOptions(me.id)).webhookLimit) { + throw new ApiError(meta.errors.tooManyWebhooks); + } + const webhook = await this.webhooksRepository.insert({ id: this.idService.genId(), createdAt: new Date(), |