summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/i/webhooks
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-01-14 10:48:11 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-01-14 10:48:11 +0900
commitbcb5182e8686dcb517defe56a18324fb0ec72027 (patch)
tree960207df78c2b5ddbff0a30dfcdcd631a54256dc /packages/backend/src/server/api/endpoints/i/webhooks
parentfix (diff)
downloadsharkey-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.ts17
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(),