diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 54e1a6db7..56ba692ad 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.1.46", + "version": "3.1.47", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/handler/problem.ts b/packages/hydrooj/src/handler/problem.ts index 5aeb177d2..6e5a1a1cd 100644 --- a/packages/hydrooj/src/handler/problem.ts +++ b/packages/hydrooj/src/handler/problem.ts @@ -161,6 +161,12 @@ export class ProblemMainHandler extends ProblemHandler { pdocs.unshift(pdoc); pcount = pcount - count + pdocs.length; } + const canViewHidden = this.user.hasPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN); + if (!canViewHidden) { + const unshift = []; + for (const doc of pdocs) if (doc.hidden && !this.user.own(doc)) unshift.push(doc); + for (const task of unshift) pdocs.unshift(task); + } } if (this.user.hasPriv(PRIV.PRIV_USER_PROFILE)) { psdict = await problem.getListStatus(