From 04b005b825eb6013d1e88b04f64241873c68bd62 Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 6 Jun 2021 13:24:17 +0800 Subject: [PATCH] core: force uid --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/model/user.ts | 2 +- packages/hydrooj/src/upgrade.ts | 11 ++++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 183fe35c5..2ceac728a 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.28.21", + "version": "2.28.22", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/model/user.ts b/packages/hydrooj/src/model/user.ts index 3dca063e3..0dcbc20bc 100644 --- a/packages/hydrooj/src/model/user.ts +++ b/packages/hydrooj/src/model/user.ts @@ -232,7 +232,7 @@ class UserModel { uid: number = 0, regip: string = '127.0.0.1', priv: number = system.get('default.priv'), ) { const salt = String.random(); - if (!uid) { + if (typeof uid !== 'number') { const [udoc] = await coll.find({}).sort({ _id: -1 }).limit(1).toArray(); uid = Math.max((udoc?._id || 0) + 1, 2); } diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index b6dc60308..62a7ecea7 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -404,10 +404,15 @@ const scripts: UpgradeScript[] = [ await iterateAllUser((udoc) => user.setPriv(udoc._id, udoc.priv | PRIV.PRIV_SEND_MESSAGE)); return true; }, + null, // Write builtin users to database - async function _31_32() { - await user.create('Guest@hydro.local', 'Guest', String.random(32), 0, '127.0.0.1', PRIV.PRIV_REGISTER_USER); - await user.create('Hydro@hydro.local', 'Hydro', String.random(32), 1, '127.0.0.1', PRIV.PRIV_USER_PROFILE); + async function _32_33() { + if (!await user.getById('system', 0)) { + await user.create('Guest@hydro.local', 'Guest', String.random(32), 0, '127.0.0.1', PRIV.PRIV_REGISTER_USER); + } + if (!await user.getById('system', 1)) { + await user.create('Hydro@hydro.local', 'Hydro', String.random(32), 1, '127.0.0.1', PRIV.PRIV_USER_PROFILE); + } return true; }, ];