From 0f7961d6753d5eb334eef19e9a95c05ccdad02f8 Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 29 Apr 2025 12:04:04 +0800 Subject: [PATCH] core: fix oauth id --- packages/hydrooj/src/upgrade.ts | 12 ++++++++++++ packages/login-with-github/index.ts | 2 +- packages/login-with-google/index.ts | 2 +- packages/telegram/index.ts | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index 3b7a40ead..ee2c28489 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -603,4 +603,16 @@ export const coreScripts: MigrationScript[] = [ }); return true; }, + async function _93_94(ctx) { + await ctx.inject(['oauth'], async (c) => { + await c.oauth.coll.deleteMany({ _id: { $type: 'string' } }); + const docs = await c.oauth.coll.find({ id: { $type: 'number' as any } }).toArray(); + const op = c.oauth.coll.initializeUnorderedBulkOp(); + for (const doc of docs) { + op.find({ _id: doc._id }).updateOne({ id: doc.id.toString() }); + } + if (op.length) await op.execute(); + }); + return true; + }, ]; diff --git a/packages/login-with-github/index.ts b/packages/login-with-github/index.ts index e3dd05019..ed9b845a1 100644 --- a/packages/login-with-github/index.ts +++ b/packages/login-with-github/index.ts @@ -47,7 +47,7 @@ export default class LoginWithGithubService extends Service { .set('Accept', 'application/vnd.github.v3+json') .set('Authorization', `token ${t}`); const ret = { - _id: userInfo.body.id, + _id: userInfo.body.id.toString(), email: userInfo.body.email, bio: userInfo.body.bio, uname: [userInfo.body.name, userInfo.body.login].filter((i) => i), diff --git a/packages/login-with-google/index.ts b/packages/login-with-google/index.ts index bdf8b9202..d12553d7a 100644 --- a/packages/login-with-google/index.ts +++ b/packages/login-with-google/index.ts @@ -60,7 +60,7 @@ export default class GoogleOAuthService extends Service { await TokenModel.del(state, TokenModel.TYPE_OAUTH); this.response.redirect = s.redirect; return { - _id: payload.sub, + _id: payload.sub.toString(), email: payload.email, uname: [`${payload.given_name} ${payload.family_name}`, payload.name], viewLang: payload.locale.replace('-', '_'), diff --git a/packages/telegram/index.ts b/packages/telegram/index.ts index 071585b7c..eff3cbd66 100644 --- a/packages/telegram/index.ts +++ b/packages/telegram/index.ts @@ -40,7 +40,7 @@ export default class TelegramService extends Service { id, first_name, last_name, username, photo_url, } = parsed; const ret = { - _id: id, + _id: id.toString(), email: `${id}@telegram.local`, bio: '', uname: [`${first_name} ${last_name}`, username, `telegram${id.toString()}`].filter((i) => i),