From cc331e75f3c1b150bf55bbf084d9f29660f31afc Mon Sep 17 00:00:00 2001 From: undefined Date: Mon, 9 Sep 2024 14:12:25 +0800 Subject: [PATCH] core: oauth: support lockUsername --- packages/hydrooj/src/handler/user.ts | 8 ++++++-- packages/hydrooj/src/interface.ts | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/hydrooj/src/handler/user.ts b/packages/hydrooj/src/handler/user.ts index 0876b81d9..790fdb733 100644 --- a/packages/hydrooj/src/handler/user.ts +++ b/packages/hydrooj/src/handler/user.ts @@ -247,12 +247,16 @@ class UserRegisterWithCodeHandler extends Handler { @param('password', Types.Password) @param('verifyPassword', Types.Password) - @param('uname', Types.Username) + @param('uname', Types.Username, true) @param('code', Types.String) async post( domainId: string, password: string, verify: string, - uname: string, code: string, + uname = '', code: string, ) { + if (this.tdoc.oauth?.[0] && global.Hydro.module.oauth[this.tdoc.oauth[0]].lockUsername) { + uname = this.tdoc.username; + } + if (!Types.Username[1](uname)) throw new ValidationError('uname'); if (password !== verify) throw new VerifyPasswordError(); if (this.tdoc.phone) this.tdoc.mail = `${String.random(12)}@hydro.local`; const uid = await user.create(this.tdoc.mail, uname, password, undefined, this.request.ip); diff --git a/packages/hydrooj/src/interface.ts b/packages/hydrooj/src/interface.ts index 316373da7..e151c9189 100644 --- a/packages/hydrooj/src/interface.ts +++ b/packages/hydrooj/src/interface.ts @@ -801,6 +801,7 @@ export interface ModuleInterfaces { icon?: string; get: (this: Handler) => Promise; callback: (this: Handler, args: Record) => Promise; + lockUsername?: boolean; }; hash: (password: string, salt: string, user: User) => boolean | string | Promise; }