From b8e34ddfcde268cdf5f8667ad3f8e8318cf055d5 Mon Sep 17 00:00:00 2001 From: panda Date: Mon, 3 Jul 2023 02:26:40 +0800 Subject: [PATCH] core: allow manager filter all groups (#604) --- packages/hydrooj/src/handler/contest.ts | 3 ++- packages/hydrooj/src/handler/homework.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/hydrooj/src/handler/contest.ts b/packages/hydrooj/src/handler/contest.ts index d0152566..eb22bf09 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -77,7 +77,8 @@ export class ContestListHandler extends Handler { @param('page', Types.PositiveInt, true) 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._id)).map((i) => i.name).filter((i) => !Number.isSafeInteger(+i)); + 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)); if (group && !groups.includes(group)) throw new NotAssignedError(group); const rules = Object.keys(contest.RULES).filter((i) => !contest.RULES[i].hidden); const q = { diff --git a/packages/hydrooj/src/handler/homework.ts b/packages/hydrooj/src/handler/homework.ts index 87cbb017..118e8433 100644 --- a/packages/hydrooj/src/handler/homework.ts +++ b/packages/hydrooj/src/handler/homework.ts @@ -24,7 +24,8 @@ class HomeworkMainHandler extends Handler { @param('group', Types.Name, true) @param('page', Types.PositiveInt, true) async get(domainId: string, group = '', page = 1) { - const groups = (await user.listGroup(domainId, this.user._id)).map((i) => i.name).filter((i) => !Number.isSafeInteger(+i)); + 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)); if (group && !groups.includes(group)) throw new NotAssignedError(group); const cursor = contest.getMulti(domainId, { rule: 'homework',