From e1cfe1cf4d9e9c500f56299c392b5eaf53323d15 Mon Sep 17 00:00:00 2001 From: undefined Date: Sat, 26 Sep 2020 20:43:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0PERM=5FNEVER=20&=20PRIV=5FNEV?= =?UTF-8?q?ER?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/contest.ts | 2 +- packages/hydrooj/src/handler/homework.ts | 2 +- packages/hydrooj/src/model/builtin.ts | 3 +++ packages/hydrooj/src/model/domain.ts | 5 +---- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index f1451b40b..f8da64d11 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.13.19", + "version": "2.13.20", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/contest.ts b/packages/hydrooj/src/handler/contest.ts index 09eb6f884..f1dda911b 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -242,7 +242,7 @@ class ContestProblemHandler extends ContestHandler { this.response.template = 'problem_detail.html'; if (contest.isDone(this.tdoc)) { if (!this.attended) throw new ContestNotAttendedError(this.tdoc.docId); - if (!contest.isOngoing(this.tdoc)) throw new ContestNotLiveError(this.tdoc.docId); + if (contest.isNotStarted(this.tdoc)) throw new ContestNotLiveError(this.tdoc.docId); } if (!this.tdoc.pids.map((s) => s.toString()).includes(this.pdoc.docId.toString())) { throw new ProblemNotFoundError(pid, this.tdoc.docId); diff --git a/packages/hydrooj/src/handler/homework.ts b/packages/hydrooj/src/handler/homework.ts index 13646d687..9189feb1c 100644 --- a/packages/hydrooj/src/handler/homework.ts +++ b/packages/hydrooj/src/handler/homework.ts @@ -128,7 +128,7 @@ class HomeworkDetailProblemHandler extends HomeworkHandler { const attended = this.tsdoc && this.tsdoc.attend === 1; if (!contest.isDone(this.tdoc)) { if (!attended) throw new HomeworkNotAttendedError(tid); - if (!contest.isOngoing(this.tdoc)) throw new HomeworkNotLiveError(tid); + if (contest.isNotStarted(this.tdoc)) throw new HomeworkNotLiveError(tid); } if (!this.tdoc.pids.includes(pid)) throw new ProblemNotFoundError(domainId, pid, tid); const path = [ diff --git a/packages/hydrooj/src/model/builtin.ts b/packages/hydrooj/src/model/builtin.ts index 95ca9cc49..8ebd0ed11 100644 --- a/packages/hydrooj/src/model/builtin.ts +++ b/packages/hydrooj/src/model/builtin.ts @@ -88,6 +88,8 @@ export const PERM = { PERM_BASIC: 0n, PERM_DEFAULT: 0n, PERM_ADMIN: -1n, + + PERM_NEVER: 1n << 59n, }; export const Permission = (family: string, key: BigInt, desc: string) => ({ family, key, desc }); @@ -237,6 +239,7 @@ export const PRIV = { PRIV_ALL: -1, PRIV_DEFAULT: 0, + PRIV_NEVER: 1 << 20, }; PRIV.PRIV_DEFAULT = PRIV.PRIV_USER_PROFILE diff --git a/packages/hydrooj/src/model/domain.ts b/packages/hydrooj/src/model/domain.ts index 559b3a023..437be8a07 100644 --- a/packages/hydrooj/src/model/domain.ts +++ b/packages/hydrooj/src/model/domain.ts @@ -158,14 +158,11 @@ export async function incUserInDomain(domainId: string, uid: number, field: stri export async function getDictUserByDomainId(uid: number) { const dudocs = await collUser.find({ uid }).toArray(); - const ddocs = await coll.find({ owner: uid }).toArray(); const dudict = {}; for (const dudoc of dudocs) { // eslint-disable-next-line no-await-in-loop dudict[dudoc.domainId] = await get(dudoc.domainId); - } - for (const ddoc of ddocs) { - dudict[ddoc._id] = ddoc; + dudict[dudoc.domainId].role = dudoc.role; } return dudict; }