summaryrefslogtreecommitdiff
path: root/src/server/api/service
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2020-02-01 07:16:52 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2020-02-01 07:16:52 +0900
commit7ed3448e13847f3ba807be1354e90c912fbefd9a (patch)
treea9d91176e5a95f90e2af570ae900641f651e77aa /src/server/api/service
parentUpdate gulpfile.ts (diff)
downloadsharkey-7ed3448e13847f3ba807be1354e90c912fbefd9a.tar.gz
sharkey-7ed3448e13847f3ba807be1354e90c912fbefd9a.tar.bz2
sharkey-7ed3448e13847f3ba807be1354e90c912fbefd9a.zip
Resolve #1669
Diffstat (limited to 'src/server/api/service')
-rw-r--r--src/server/api/service/discord.ts58
-rw-r--r--src/server/api/service/github.ts31
-rw-r--r--src/server/api/service/twitter.ts34
3 files changed, 69 insertions, 54 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} に接続しました!`;
diff --git a/src/server/api/service/github.ts b/src/server/api/service/github.ts
index 071b4a96d1..ec9cce7ad8 100644
--- a/src/server/api/service/github.ts
+++ b/src/server/api/service/github.ts
@@ -46,13 +46,12 @@ router.get('/disconnect/github', async ctx => {
token: userToken
}).then(ensure);
- await UserProfiles.update({
- userId: user.id
- }, {
- github: false,
- githubAccessToken: null,
- githubId: null,
- githubLogin: null,
+ const profile = await UserProfiles.findOne(user.id).then(ensure);
+
+ delete profile.integrations.github;
+
+ await UserProfiles.update(user.id, {
+ integrations: profile.integrations,
});
ctx.body = `GitHubの連携を解除しました :v:`;
@@ -193,7 +192,7 @@ router.get('/gh/cb', async ctx => {
}
const link = await UserProfiles.createQueryBuilder()
- .where('"githubId" = :id', { id: id })
+ .where('"integrations"->"github"->"id" = :id', { id: id })
.andWhere('"userHost" IS NULL')
.getOne();
@@ -260,11 +259,17 @@ router.get('/gh/cb', async ctx => {
token: userToken
}).then(ensure);
- await UserProfiles.update({ userId: user.id }, {
- github: true,
- githubAccessToken: accessToken,
- githubId: id,
- githubLogin: login,
+ const profile = await UserProfiles.findOne(user.id).then(ensure);
+
+ await UserProfiles.update(user.id, {
+ integrations: {
+ ...profile.integrations,
+ github: {
+ accessToken: accessToken,
+ id: id,
+ login: login,
+ }
+ }
});
ctx.body = `GitHub: @${login} を、Misskey: @${user.username} に接続しました!`;
diff --git a/src/server/api/service/twitter.ts b/src/server/api/service/twitter.ts
index dc6c593201..881915b58f 100644
--- a/src/server/api/service/twitter.ts
+++ b/src/server/api/service/twitter.ts
@@ -45,14 +45,12 @@ router.get('/disconnect/twitter', async ctx => {
token: userToken
}).then(ensure);
- await UserProfiles.update({
- userId: user.id
- }, {
- twitter: false,
- twitterAccessToken: null,
- twitterAccessTokenSecret: null,
- twitterUserId: null,
- twitterScreenName: null,
+ const profile = await UserProfiles.findOne(user.id).then(ensure);
+
+ delete profile.integrations.twitter;
+
+ await UserProfiles.update(user.id, {
+ integrations: profile.integrations,
});
ctx.body = `Twitterの連携を解除しました :v:`;
@@ -141,7 +139,7 @@ router.get('/tw/cb', async ctx => {
const result = await twAuth!.done(JSON.parse(twCtx), ctx.query.oauth_verifier);
const link = await UserProfiles.createQueryBuilder()
- .where('"twitterUserId" = :id', { id: result.userId })
+ .where('"integrations"->"twitter"->"userId" = :id', { id: result.userId })
.andWhere('"userHost" IS NULL')
.getOne();
@@ -174,12 +172,18 @@ router.get('/tw/cb', async ctx => {
token: userToken
}).then(ensure);
- await UserProfiles.update({ userId: user.id }, {
- twitter: true,
- twitterAccessToken: result.accessToken,
- twitterAccessTokenSecret: result.accessTokenSecret,
- twitterUserId: result.userId,
- twitterScreenName: result.screenName,
+ const profile = await UserProfiles.findOne(user.id).then(ensure);
+
+ await UserProfiles.update(user.id, {
+ integrations: {
+ ...profile.integrations,
+ twitter: {
+ accessToken: result.accessToken,
+ accessTokenSecret: result.accessTokenSecret,
+ userId: result.userId,
+ screenName: result.screenName,
+ }
+ },
});
ctx.body = `Twitter: @${result.screenName} を、Misskey: @${user.username} に接続しました!`;