diff --git a/packages/backend/src/queue/processors/ReportAbuseProcessorService.ts b/packages/backend/src/queue/processors/ReportAbuseProcessorService.ts index d80e31542..a47019509 100644 --- a/packages/backend/src/queue/processors/ReportAbuseProcessorService.ts +++ b/packages/backend/src/queue/processors/ReportAbuseProcessorService.ts @@ -88,13 +88,9 @@ export class ReportAbuseProcessorService { forwarded: resolver.forward && job.data.targetUserHost !== null && job.data.reporterHost === null, }); - const activeWebhooks = await this.webhookService.getActiveWebhooks(); - for (const webhook of activeWebhooks) { - const webhookUser = await this.usersRepository.findOneByOrFail({ - id: webhook.userId, - }); - const isAdmin = await this.roleService.isAdministrator(webhookUser); - if (webhook.on.includes('reportAutoResolved') && isAdmin) { + const webhooks = (await this.webhookService.getActiveWebhooks()).filter(x => x.on.includes('reportAutoResolved')); + for (const webhook of webhooks) { + if (await this.roleService.isAdministrator({ id: webhook.userId, isRoot: false })) { this.queueService.webhookDeliver(webhook, 'reportAutoResolved', { resolver: resolver, report: job.data, diff --git a/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts b/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts index 0fa3fe833..dbd2416d1 100644 --- a/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts +++ b/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts @@ -69,13 +69,9 @@ export default class extends Endpoint { // eslint- forwarded: ps.forward && report.targetUserHost != null, }).then(() => this.abuseUserReportsRepository.findOneBy({ id: ps.reportId })); - const activeWebhooks = await this.webhookService.getActiveWebhooks(); - for (const webhook of activeWebhooks) { - const webhookUser = await this.usersRepository.findOneByOrFail({ - id: webhook.userId, - }); - const isAdmin = await this.roleService.isAdministrator(webhookUser); - if (webhook.on.includes('reportResolved') && isAdmin) { + const webhooks = (await this.webhookService.getActiveWebhooks()).filter(x => x.on.includes('reportResolved')); + for (const webhook of webhooks) { + if (await this.roleService.isAdministrator({ id: webhook.userId, isRoot: false })) { this.queueService.webhookDeliver(webhook, 'reportResolved', { updatedReport, }); diff --git a/packages/backend/src/server/api/endpoints/users/report-abuse.ts b/packages/backend/src/server/api/endpoints/users/report-abuse.ts index 4d5886aff..fd952c460 100644 --- a/packages/backend/src/server/api/endpoints/users/report-abuse.ts +++ b/packages/backend/src/server/api/endpoints/users/report-abuse.ts @@ -100,13 +100,9 @@ export default class extends Endpoint { // eslint- category: ps.category, }).then(x => this.abuseUserReportsRepository.findOneByOrFail(x.identifiers[0])); - const activeWebhooks = await this.webhookService.getActiveWebhooks(); - for (const webhook of activeWebhooks) { - const webhookUser = await this.usersRepository.findOneByOrFail({ - id: webhook.userId, - }); - const isAdmin = await this.roleService.isAdministrator(webhookUser); - if (webhook.on.includes('reportCreated') && isAdmin) { + const webhooks = (await this.webhookService.getActiveWebhooks()).filter(x => x.on.includes('reportCreated')); + for (const webhook of webhooks) { + if (await this.roleService.isAdministrator({ id: webhook.userId, isRoot: false })) { this.queueService.webhookDeliver(webhook, 'reportCreated', { report, });