From 4b48c0c1642b8597cd009726cae99d135c0208a3 Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 6 Apr 2021 19:46:08 +0800 Subject: [PATCH] core: use NumericArray to parse uids --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/domain.ts | 2 +- packages/hydrooj/src/service/server.ts | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 3867c3f1f..22f157885 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.21.13", + "version": "2.21.14", "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 041c4f24d..872bb9b3f 100644 --- a/packages/hydrooj/src/handler/domain.ts +++ b/packages/hydrooj/src/handler/domain.ts @@ -136,7 +136,7 @@ class DomainUserHandler extends ManageHandler { this.back(); } - @param('uid', Types.Array) + @param('uid', Types.NumericArray) @param('role', Types.String) async postSetUsers(domainId: string, uid: number[], role: string) { await domain.setUserRole(domainId, uid, role); diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index 7e45a22ee..36b5e05aa 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -68,6 +68,7 @@ export interface Types { Time: Type, Range: (range: Array | Dictionary) => Type, Array: Type, + NumericArray: Type, Set: Type, } @@ -140,6 +141,13 @@ export const Types: Types = { if (v instanceof Array) return v; return v ? [v] : []; }, null], + NumericArray: [(v) => { + if (v instanceof Array) return v.map(Number); + return v ? [Number(v)] : []; + }, (v) => { + if (v instanceof Array) return !v.map(Number).includes(NaN); + return !Number.isNaN(+v); + }], Set: [(v) => { if (v instanceof Array) return new Set(v); return v ? new Set([v]) : new Set();