diff --git a/packages/hydrooj/src/handler/user.ts b/packages/hydrooj/src/handler/user.ts index 6eb0dbcf3..05962e3fa 100644 --- a/packages/hydrooj/src/handler/user.ts +++ b/packages/hydrooj/src/handler/user.ts @@ -271,6 +271,7 @@ class UserRegisterWithCodeHandler extends Handler { if (mailDomain === 'qq.com' && !Number.isNaN(+id)) $set.avatar = `qq:${id}`; if (this.session.viewLang) $set.viewLang = this.session.viewLang; if (Object.keys($set).length) await user.setById(uid, $set); + if (Object.keys(this.tdoc.setInDomain || {}).length) await domain.setUserInDomain(domainId, uid, this.tdoc.setInDomain); if (this.tdoc.oauth) await oauth.set(this.tdoc.oauth[1], uid); this.context.HydroContext.user = await user.getById(domainId, uid); this.session.viewLang = ''; @@ -456,7 +457,7 @@ class OauthCallbackHandler extends Handler { break; } } - const set: Partial = { oauth: args.type }; + const set: Partial = { oauth: args.type, ...r.set }; if (r.bio) set.bio = r.bio; if (r.viewLang) set.viewLang = r.viewLang; if (r.avatar) set.avatar = r.avatar; @@ -468,6 +469,7 @@ class OauthCallbackHandler extends Handler { username, redirect: this.domain.registerRedirect, set, + setInDomain: r.setInDomain, oauth: [args.type, r._id], }, ); diff --git a/packages/hydrooj/src/interface.ts b/packages/hydrooj/src/interface.ts index 9ffda1dda..7feedcc25 100644 --- a/packages/hydrooj/src/interface.ts +++ b/packages/hydrooj/src/interface.ts @@ -58,6 +58,8 @@ export interface OAuthUserResponse { bio?: string; uname?: string[]; viewLang?: string; + set?: Record; + setInDomain?: Record; } export interface Authenticator {