From 87f61e714ad3b17856a6a5ac66051707badb3bd0 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 19 Oct 2020 19:29:04 +0900 Subject: Resolve #6087 --- .../api/endpoints/admin/abuse-user-reports.ts | 38 ++++++++++++++++++++++ .../endpoints/admin/remove-abuse-user-report.ts | 27 --------------- .../endpoints/admin/resolve-abuse-user-report.ts | 30 +++++++++++++++++ src/server/api/endpoints/users/report-abuse.ts | 10 +++--- 4 files changed, 74 insertions(+), 31 deletions(-) delete mode 100644 src/server/api/endpoints/admin/remove-abuse-user-report.ts create mode 100644 src/server/api/endpoints/admin/resolve-abuse-user-report.ts (limited to 'src/server/api') diff --git a/src/server/api/endpoints/admin/abuse-user-reports.ts b/src/server/api/endpoints/admin/abuse-user-reports.ts index d5a52184d1..6a7f380e16 100644 --- a/src/server/api/endpoints/admin/abuse-user-reports.ts +++ b/src/server/api/endpoints/admin/abuse-user-reports.ts @@ -23,12 +23,50 @@ export const meta = { untilId: { validator: $.optional.type(ID), }, + + state: { + validator: $.optional.nullable.str, + default: null, + }, + + reporterOrigin: { + validator: $.optional.str.or([ + 'combined', + 'local', + 'remote', + ]), + default: 'combined' + }, + + targetUserOrigin: { + validator: $.optional.str.or([ + 'combined', + 'local', + 'remote', + ]), + default: 'combined' + }, } }; export default define(meta, async (ps) => { const query = makePaginationQuery(AbuseUserReports.createQueryBuilder('report'), ps.sinceId, ps.untilId); + switch (ps.state) { + case 'resolved': query.andWhere('report.resolved = TRUE'); break; + case 'unresolved': query.andWhere('report.resolved = FALSE'); break; + } + + switch (ps.reporterOrigin) { + case 'local': query.andWhere('report.reporterHost IS NULL'); break; + case 'remote': query.andWhere('report.reporterHost IS NOT NULL'); break; + } + + switch (ps.targetUserOrigin) { + case 'local': query.andWhere('report.targetUserHost IS NULL'); break; + case 'remote': query.andWhere('report.targetUserHost IS NOT NULL'); break; + } + const reports = await query.take(ps.limit!).getMany(); return await AbuseUserReports.packMany(reports); diff --git a/src/server/api/endpoints/admin/remove-abuse-user-report.ts b/src/server/api/endpoints/admin/remove-abuse-user-report.ts deleted file mode 100644 index 150de5f5d4..0000000000 --- a/src/server/api/endpoints/admin/remove-abuse-user-report.ts +++ /dev/null @@ -1,27 +0,0 @@ -import $ from 'cafy'; -import { ID } from '../../../../misc/cafy-id'; -import define from '../../define'; -import { AbuseUserReports } from '../../../../models'; - -export const meta = { - tags: ['admin'], - - requireCredential: true as const, - requireModerator: true, - - params: { - reportId: { - validator: $.type(ID), - }, - } -}; - -export default define(meta, async (ps) => { - const report = await AbuseUserReports.findOne(ps.reportId); - - if (report == null) { - throw new Error('report not found'); - } - - await AbuseUserReports.delete(report.id); -}); diff --git a/src/server/api/endpoints/admin/resolve-abuse-user-report.ts b/src/server/api/endpoints/admin/resolve-abuse-user-report.ts new file mode 100644 index 0000000000..0a62b5f365 --- /dev/null +++ b/src/server/api/endpoints/admin/resolve-abuse-user-report.ts @@ -0,0 +1,30 @@ +import $ from 'cafy'; +import { ID } from '../../../../misc/cafy-id'; +import define from '../../define'; +import { AbuseUserReports } from '../../../../models'; + +export const meta = { + tags: ['admin'], + + requireCredential: true as const, + requireModerator: true, + + params: { + reportId: { + validator: $.type(ID), + }, + } +}; + +export default define(meta, async (ps, me) => { + const report = await AbuseUserReports.findOne(ps.reportId); + + if (report == null) { + throw new Error('report not found'); + } + + await AbuseUserReports.update(report.id, { + resolved: true, + assigneeId: me.id, + }); +}); diff --git a/src/server/api/endpoints/users/report-abuse.ts b/src/server/api/endpoints/users/report-abuse.ts index a9b5543f3c..eaa4cd6258 100644 --- a/src/server/api/endpoints/users/report-abuse.ts +++ b/src/server/api/endpoints/users/report-abuse.ts @@ -26,7 +26,7 @@ export const meta = { }, comment: { - validator: $.str.range(1, 3000), + validator: $.str.range(1, 2048), desc: { 'ja-JP': '迷惑行為の詳細' } @@ -72,9 +72,11 @@ export default define(meta, async (ps, me) => { const report = await AbuseUserReports.save({ id: genId(), createdAt: new Date(), - userId: user.id, + targetUserId: user.id, + targetUserHost: user.host, reporterId: me.id, - comment: ps.comment + reporterHost: null, + comment: ps.comment, }); // Publish event to moderators @@ -90,7 +92,7 @@ export default define(meta, async (ps, me) => { for (const moderator of moderators) { publishAdminStream(moderator.id, 'newAbuseUserReport', { id: report.id, - userId: report.userId, + targetUserId: report.targetUserId, reporterId: report.reporterId, comment: report.comment }); -- cgit v1.2.3-freya