From f570ef70a0000c61d5d207d38aa89d0cb8e719a2 Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 4 Nov 2020 22:23:51 +0800 Subject: [PATCH] =?UTF-8?q?core:=20=E4=BF=AE=E5=A4=8DPERM=E9=94=AE?= =?UTF-8?q?=E5=80=BC=E9=87=8D=E5=A4=8D=E5=AF=BC=E8=87=B4=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E8=AE=BE=E7=BD=AE=E6=9D=83=E9=99=90=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/domain.ts | 21 ++++++++++----------- packages/hydrooj/src/model/builtin.ts | 6 +++--- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 3a79e2926..8c575a370 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.13.37", + "version": "2.13.38", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/domain.ts b/packages/hydrooj/src/handler/domain.ts index bb2a9b97d..ab1da0829 100644 --- a/packages/hydrooj/src/handler/domain.ts +++ b/packages/hydrooj/src/handler/domain.ts @@ -126,10 +126,7 @@ class DomainPermissionHandler extends ManageHandler { const roles = await domain.getRoles(domainId); const log2 = (val: bigint) => { // @ts-ignore - for (let i = 0n; ; i++) { - // @ts-ignore - if ((val >> i) === 0n) return parseInt(i.toString(), 10) - 1; - } + for (let i = 0n; ; i++) if (!(val >> i)) return +i.toString() - 1; }; const path = [ ['Hydro', 'homepage'], @@ -144,14 +141,16 @@ class DomainPermissionHandler extends ManageHandler { async post({ domainId }) { const roles = {}; + delete this.request.body.csrfToken; for (const role in this.request.body) { - if (this.request.body[role] instanceof Array) { - const perms = this.request.body[role]; - // @ts-ignore - roles[role] = 0n; - // @ts-ignore - for (const r of perms) roles[role] += 1n << BigInt(r); - } + const perms = this.request.body[role] instanceof Array + ? this.request.body[role] + : [this.request.body[role]]; + // @ts-ignore + roles[role] = 0n; + console.log(role, perms); + // @ts-ignore + for (const r of perms) roles[role] += 1n << BigInt(r); } await domain.setRoles(domainId, roles); this.back(); diff --git a/packages/hydrooj/src/model/builtin.ts b/packages/hydrooj/src/model/builtin.ts index 8ebd0ed11..958bf3d69 100644 --- a/packages/hydrooj/src/model/builtin.ts +++ b/packages/hydrooj/src/model/builtin.ts @@ -45,7 +45,7 @@ export const PERM = { PERM_VIEW_DISCUSSION: 1n << 27n, PERM_CREATE_DISCUSSION: 1n << 28n, PERM_HIGHLIGHT_DISCUSSION: 1n << 29n, - PERM_PIN_DISCUSSION: 1n << 59n, + PERM_PIN_DISCUSSION: 1n << 61n, PERM_EDIT_DISCUSSION: 1n << 30n, PERM_EDIT_DISCUSSION_SELF: 1n << 31n, PERM_DELETE_DISCUSSION: 1n << 32n, @@ -81,7 +81,7 @@ export const PERM = { PERM_EDIT_TRAINING_SELF: 1n << 49n, // Ranking - PERM_VIEW_RANKING: 1n << 50n, + PERM_VIEW_RANKING: 1n << 59n, // Placeholder PERM_ALL: -1n, @@ -89,7 +89,7 @@ export const PERM = { PERM_DEFAULT: 0n, PERM_ADMIN: -1n, - PERM_NEVER: 1n << 59n, + PERM_NEVER: 1n << 60n, }; export const Permission = (family: string, key: BigInt, desc: string) => ({ family, key, desc });