From 510da25c884a9b6d555b7420a4b699cf485e0708 Mon Sep 17 00:00:00 2001 From: undefined Date: Mon, 26 Dec 2022 11:13:20 +0800 Subject: [PATCH] core: contest: check PERM_VIEW_HOMEWORK_HIDDEN_SCOREBOARD --- packages/hydrooj/src/model/contest.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/hydrooj/src/model/contest.ts b/packages/hydrooj/src/model/contest.ts index b4f5b75c7..bf31fe196 100644 --- a/packages/hydrooj/src/model/contest.ts +++ b/packages/hydrooj/src/model/contest.ts @@ -698,25 +698,26 @@ export async function unlockScoreboard(domainId: string, tid: ObjectID) { await edit(domainId, tid, { unlocked: true }); } -export function canViewHiddenScoreboard() { +export function canViewHiddenScoreboard(tdoc: Tdoc<30>) { + if (tdoc.rule === 'homework') return this.user.hasPerm(PERM.PERM_VIEW_HOMEWORK_HIDDEN_SCOREBOARD); return this.user.hasPerm(PERM.PERM_VIEW_CONTEST_HIDDEN_SCOREBOARD); } export function canShowRecord(tdoc: Tdoc<30>, allowPermOverride = true) { if (RULES[tdoc.rule].showRecord(tdoc, new Date())) return true; - if (allowPermOverride && canViewHiddenScoreboard.call(this)) return true; + if (allowPermOverride && canViewHiddenScoreboard.call(this, tdoc)) return true; return false; } export function canShowSelfRecord(tdoc: Tdoc<30>, allowPermOverride = true) { if (RULES[tdoc.rule].showSelfRecord(tdoc, new Date())) return true; - if (allowPermOverride && canViewHiddenScoreboard.call(this)) return true; + if (allowPermOverride && canViewHiddenScoreboard.call(this, tdoc)) return true; return false; } export function canShowScoreboard(tdoc: Tdoc<30>, allowPermOverride = true) { if (RULES[tdoc.rule].showScoreboard(tdoc, new Date())) return true; - if (allowPermOverride && canViewHiddenScoreboard.call(this)) return true; + if (allowPermOverride && canViewHiddenScoreboard.call(this, tdoc)) return true; return false; }