diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 961490cb6..6f2278cdd 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.29.1", + "version": "2.29.2", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/record.ts b/packages/hydrooj/src/handler/record.ts index 980df4432..406a030ae 100644 --- a/packages/hydrooj/src/handler/record.ts +++ b/packages/hydrooj/src/handler/record.ts @@ -228,7 +228,7 @@ class RecordMainConnectionHandler extends ConnectionHandler { problem.get(this.domainId, rdoc.pid, null), ]); if (pdoc) { - if (pdoc.hidden && !this.user.hasPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN)) pdoc = null; + if (pdoc.hidden && !this.user.own(pdoc) && !this.user.hasPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN)) pdoc = null; if (!this.user.hasPerm(PERM.PERM_VIEW_PROBLEM)) pdoc = null; } if (this.pretest) this.send({ rdoc }); diff --git a/packages/ui-default/handler.js b/packages/ui-default/handler.js index 6c33e629c..2a5780faa 100644 --- a/packages/ui-default/handler.js +++ b/packages/ui-default/handler.js @@ -134,7 +134,7 @@ class RichMediaHandler extends Handler { let pdoc = cur.hasPerm(PERM.PERM_VIEW | PERM.PERM_VIEW_PROBLEM) ? await problem.get(domainId, payload.id) || problem.default : problem.default; - if (pdoc.hidden && !cur.hasPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN)) pdoc = problem.default; + if (pdoc.hidden && !cur.own(pdoc) && !cur.hasPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN)) pdoc = problem.default; return await this.renderHTML('partials/problem.html', { pdoc }); } diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 559cb25b7..78fa1f9bc 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.12.0", + "version": "4.12.1", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js",