From 64b667e44d357c558e34794feb79c7dfcccbe0c9 Mon Sep 17 00:00:00 2001 From: undefined Date: Thu, 13 Jul 2023 13:19:00 +0800 Subject: [PATCH] core: fix group filter --- packages/hydrooj/src/handler/contest.ts | 5 +++-- packages/hydrooj/src/handler/homework.ts | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/hydrooj/src/handler/contest.ts b/packages/hydrooj/src/handler/contest.ts index 0bfdb999a..7f53e9004 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -78,7 +78,7 @@ export class ContestListHandler extends Handler { async get(domainId: string, rule = '', group = '', page = 1) { if (rule && contest.RULES[rule].hidden) throw new BadRequestError(); const groups = (await user.listGroup(domainId, this.user.hasPerm(PERM.PERM_VIEW_HIDDEN_CONTEST) ? undefined : this.user._id)) - .map((i) => i.name).filter((i) => !Number.isSafeInteger(+i)); + .map((i) => i.name); if (group && !groups.includes(group)) throw new NotAssignedError(group); const rules = Object.keys(contest.RULES).filter((i) => !contest.RULES[i].hidden); const q = { @@ -102,9 +102,10 @@ export class ContestListHandler extends Handler { const tids = []; for (const tdoc of tdocs) tids.push(tdoc.docId); const tsdict = await contest.getListStatus(domainId, this.user._id, tids); + const groupsFilter = groups.filter((i) => !Number.isSafeInteger(+i)); this.response.template = 'contest_main.html'; this.response.body = { - page, tpcount, qs, rule, tdocs, tsdict, groups, group, + page, tpcount, qs, rule, tdocs, tsdict, groups: groupsFilter, group, }; } } diff --git a/packages/hydrooj/src/handler/homework.ts b/packages/hydrooj/src/handler/homework.ts index bbf88de7b..f3b10e895 100644 --- a/packages/hydrooj/src/handler/homework.ts +++ b/packages/hydrooj/src/handler/homework.ts @@ -25,7 +25,7 @@ class HomeworkMainHandler extends Handler { @param('page', Types.PositiveInt, true) async get(domainId: string, group = '', page = 1) { const groups = (await user.listGroup(domainId, this.user.hasPerm(PERM.PERM_VIEW_HIDDEN_CONTEST) ? undefined : this.user._id)) - .map((i) => i.name).filter((i) => !Number.isSafeInteger(+i)); + .map((i) => i.name); if (group && !groups.includes(group)) throw new NotAssignedError(group); const cursor = contest.getMulti(domainId, { rule: 'homework', @@ -54,8 +54,9 @@ class HomeworkMainHandler extends Handler { calendar.push(cal); } const qs = group ? `group=${group}` : ''; + const groupsFilter = groups.filter((i) => !Number.isSafeInteger(+i)); this.response.body = { - tdocs, calendar, tpcount, page, qs, groups, group, + tdocs, calendar, tpcount, page, qs, groups: groupsFilter, group, }; this.response.template = 'homework_main.html'; }