diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2020-02-01 07:16:52 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2020-02-01 07:16:52 +0900 |
| commit | 7ed3448e13847f3ba807be1354e90c912fbefd9a (patch) | |
| tree | a9d91176e5a95f90e2af570ae900641f651e77aa /src/server/api/service/discord.ts | |
| parent | Update gulpfile.ts (diff) | |
| download | misskey-7ed3448e13847f3ba807be1354e90c912fbefd9a.tar.gz misskey-7ed3448e13847f3ba807be1354e90c912fbefd9a.tar.bz2 misskey-7ed3448e13847f3ba807be1354e90c912fbefd9a.zip | |
Resolve #1669
Diffstat (limited to 'src/server/api/service/discord.ts')
| -rw-r--r-- | src/server/api/service/discord.ts | 58 |
1 files changed, 32 insertions, 26 deletions
diff --git a/src/server/api/service/discord.ts b/src/server/api/service/discord.ts index d5ca05577c..f9f3026aa8 100644 --- a/src/server/api/service/discord.ts +++ b/src/server/api/service/discord.ts @@ -46,16 +46,12 @@ router.get('/disconnect/discord', async ctx => { token: userToken }).then(ensure); - await UserProfiles.update({ - userId: user.id - }, { - discord: false, - discordAccessToken: null, - discordRefreshToken: null, - discordExpiresDate: null, - discordId: null, - discordUsername: null, - discordDiscriminator: null, + const profile = await UserProfiles.findOne(user.id).then(ensure); + + delete profile.integrations.discord; + + await UserProfiles.update(user.id, { + integrations: profile.integrations, }); ctx.body = `Discordの連携を解除しました :v:`; @@ -203,7 +199,7 @@ router.get('/dc/cb', async ctx => { } const profile = await UserProfiles.createQueryBuilder() - .where('"discordId" = :id', { id: id }) + .where('"integrations"->"discord"->"id" = :id', { id: id }) .andWhere('"userHost" IS NULL') .getOne(); @@ -212,13 +208,17 @@ router.get('/dc/cb', async ctx => { return; } - await UserProfiles.update({ userId: profile.userId }, { - discord: true, - discordAccessToken: accessToken, - discordRefreshToken: refreshToken, - discordExpiresDate: expiresDate, - discordUsername: username, - discordDiscriminator: discriminator + await UserProfiles.update(profile.userId, { + integrations: { + ...profile.integrations, + discord: { + accessToken: accessToken, + refreshToken: refreshToken, + expiresDate: expiresDate, + username: username, + discriminator: discriminator + } + }, }); signin(ctx, await Users.findOne(profile.userId) as ILocalUser, true); @@ -284,14 +284,20 @@ router.get('/dc/cb', async ctx => { token: userToken }).then(ensure); - await UserProfiles.update({ userId: user.id }, { - discord: true, - discordAccessToken: accessToken, - discordRefreshToken: refreshToken, - discordExpiresDate: expiresDate, - discordId: id, - discordUsername: username, - discordDiscriminator: discriminator + const profile = await UserProfiles.findOne(user.id).then(ensure); + + await UserProfiles.update(user.id, { + integrations: { + ...profile.integrations, + discord: { + accessToken: accessToken, + refreshToken: refreshToken, + expiresDate: expiresDate, + id: id, + username: username, + discriminator: discriminator + } + } }); ctx.body = `Discord: @${username}#${discriminator} を、Misskey: @${user.username} に接続しました!`; |