summaryrefslogtreecommitdiff
path: root/src/server/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/api')
-rw-r--r--src/server/api/endpoints/i/2fa/done.ts2
-rw-r--r--src/server/api/endpoints/i/2fa/register.ts2
-rw-r--r--src/server/api/endpoints/i/2fa/unregister.ts2
-rw-r--r--src/server/api/endpoints/i/change-password.ts2
-rw-r--r--src/server/api/endpoints/i/update-email.ts4
-rw-r--r--src/server/api/endpoints/i/update.ts2
-rw-r--r--src/server/api/endpoints/room/show.ts6
-rw-r--r--src/server/api/endpoints/room/update.ts2
-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
11 files changed, 80 insertions, 65 deletions
diff --git a/src/server/api/endpoints/i/2fa/done.ts b/src/server/api/endpoints/i/2fa/done.ts
index c134e1b226..3420bc3f64 100644
--- a/src/server/api/endpoints/i/2fa/done.ts
+++ b/src/server/api/endpoints/i/2fa/done.ts
@@ -35,7 +35,7 @@ export default define(meta, async (ps, user) => {
throw new Error('not verified');
}
- await UserProfiles.update({ userId: user.id }, {
+ await UserProfiles.update(user.id, {
twoFactorSecret: profile.twoFactorTempSecret,
twoFactorEnabled: true
});
diff --git a/src/server/api/endpoints/i/2fa/register.ts b/src/server/api/endpoints/i/2fa/register.ts
index bd46b7c68c..112cdd6b7c 100644
--- a/src/server/api/endpoints/i/2fa/register.ts
+++ b/src/server/api/endpoints/i/2fa/register.ts
@@ -34,7 +34,7 @@ export default define(meta, async (ps, user) => {
length: 32
});
- await UserProfiles.update({ userId: user.id }, {
+ await UserProfiles.update(user.id, {
twoFactorTempSecret: secret.base32
});
diff --git a/src/server/api/endpoints/i/2fa/unregister.ts b/src/server/api/endpoints/i/2fa/unregister.ts
index 99483143cc..8fda128095 100644
--- a/src/server/api/endpoints/i/2fa/unregister.ts
+++ b/src/server/api/endpoints/i/2fa/unregister.ts
@@ -26,7 +26,7 @@ export default define(meta, async (ps, user) => {
throw new Error('incorrect password');
}
- await UserProfiles.update({ userId: user.id }, {
+ await UserProfiles.update(user.id, {
twoFactorSecret: null,
twoFactorEnabled: false
});
diff --git a/src/server/api/endpoints/i/change-password.ts b/src/server/api/endpoints/i/change-password.ts
index 07d2d864d2..0f44bbf826 100644
--- a/src/server/api/endpoints/i/change-password.ts
+++ b/src/server/api/endpoints/i/change-password.ts
@@ -34,7 +34,7 @@ export default define(meta, async (ps, user) => {
const salt = await bcrypt.genSalt(8);
const hash = await bcrypt.hash(ps.newPassword, salt);
- await UserProfiles.update({ userId: user.id }, {
+ await UserProfiles.update(user.id, {
password: hash
});
});
diff --git a/src/server/api/endpoints/i/update-email.ts b/src/server/api/endpoints/i/update-email.ts
index ca95e612a3..92ac3d79eb 100644
--- a/src/server/api/endpoints/i/update-email.ts
+++ b/src/server/api/endpoints/i/update-email.ts
@@ -49,7 +49,7 @@ export default define(meta, async (ps, user) => {
throw new ApiError(meta.errors.incorrectPassword);
}
- await UserProfiles.update({ userId: user.id }, {
+ await UserProfiles.update(user.id, {
email: ps.email,
emailVerified: false,
emailVerifyCode: null
@@ -66,7 +66,7 @@ export default define(meta, async (ps, user) => {
if (ps.email != null) {
const code = rndstr('a-z0-9', 16);
- await UserProfiles.update({ userId: user.id }, {
+ await UserProfiles.update(user.id, {
emailVerifyCode: code
});
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index f7f03e84a3..14ed27fe5a 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -268,7 +268,7 @@ export default define(meta, async (ps, user, app) => {
//#endregion
if (Object.keys(updates).length > 0) await Users.update(user.id, updates);
- if (Object.keys(profileUpdates).length > 0) await UserProfiles.update({ userId: user.id }, profileUpdates);
+ if (Object.keys(profileUpdates).length > 0) await UserProfiles.update(user.id, profileUpdates);
const iObj = await Users.pack(user.id, user, {
detail: true,
diff --git a/src/server/api/endpoints/room/show.ts b/src/server/api/endpoints/room/show.ts
index 17634834ac..2dc69210a0 100644
--- a/src/server/api/endpoints/room/show.ts
+++ b/src/server/api/endpoints/room/show.ts
@@ -54,7 +54,7 @@ export default define(meta, async (ps, me) => {
const profile = await UserProfiles.findOne(user.id).then(ensure);
if (profile.room.furnitures == null) {
- await UserProfiles.update({ userId: user.id }, {
+ await UserProfiles.update(user.id, {
room: {
furnitures: [],
...profile.room
@@ -66,7 +66,7 @@ export default define(meta, async (ps, me) => {
if (profile.room.roomType == null) {
const initialType = 'default';
- await UserProfiles.update({ userId: user.id }, {
+ await UserProfiles.update(user.id, {
room: {
roomType: initialType as any,
...profile.room
@@ -78,7 +78,7 @@ export default define(meta, async (ps, me) => {
if (profile.room.carpetColor == null) {
const initialColor = '#85CAF0';
- await UserProfiles.update({ userId: user.id }, {
+ await UserProfiles.update(user.id, {
room: {
carpetColor: initialColor as any,
...profile.room
diff --git a/src/server/api/endpoints/room/update.ts b/src/server/api/endpoints/room/update.ts
index 897f65f2d2..97586eb6f3 100644
--- a/src/server/api/endpoints/room/update.ts
+++ b/src/server/api/endpoints/room/update.ts
@@ -32,7 +32,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- await UserProfiles.update({ userId: user.id }, {
+ await UserProfiles.update(user.id, {
room: ps.room as any
});
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} に接続しました!`;