From a091cbb93aa4f204b2c8af6574b5b5c62eafd853 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Wed, 10 Jul 2019 03:47:07 +0900 Subject: Prevent duplicate user registration (#5129) --- src/server/api/private/signup.ts | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/server/api/private') diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts index ca197a6611..ac99ea0d33 100644 --- a/src/server/api/private/signup.ts +++ b/src/server/api/private/signup.ts @@ -104,6 +104,13 @@ export default async (ctx: Koa.BaseContext) => { // Start transaction await getConnection().transaction(async transactionalEntityManager => { + const exist = await transactionalEntityManager.findOne(User, { + usernameLower: username.toLowerCase(), + host: null + }); + + if (exist) throw 'already registered'; + account = await transactionalEntityManager.save(new User({ id: genId(), createdAt: new Date(), -- cgit v1.2.3-freya From f1a7ab639b1ff17327040a041a6151648e79c388 Mon Sep 17 00:00:00 2001 From: Satsuki Yanagi <17376330+u1-liquid@users.noreply.github.com> Date: Thu, 18 Jul 2019 00:00:03 +0900 Subject: Resolve #5117 (#5171) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Resolve #5117 * 出来立てのユーザーがストリームコネクションを持ってるはずがない --- src/server/api/private/signup.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/server/api/private') diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts index ac99ea0d33..026fe7485b 100644 --- a/src/server/api/private/signup.ts +++ b/src/server/api/private/signup.ts @@ -5,7 +5,7 @@ import generateUserToken from '../common/generate-native-user-token'; import config from '../../../config'; import { fetchMeta } from '../../../misc/fetch-meta'; import * as recaptcha from 'recaptcha-promise'; -import { Users, RegistrationTickets } from '../../../models'; +import { Users, Signins, RegistrationTickets } from '../../../models'; import { genId } from '../../../misc/gen-id'; import { usersChart } from '../../../services/chart'; import { User } from '../../../models/entities/user'; @@ -137,6 +137,16 @@ export default async (ctx: Koa.BaseContext) => { usersChart.update(account, true); + // Append signin history + await Signins.save({ + id: genId(), + createdAt: new Date(), + userId: account.id, + ip: ctx.ip, + headers: ctx.headers, + success: true + }); + const res = await Users.pack(account, account, { detail: true, includeSecrets: true -- cgit v1.2.3-freya From a97c14a7b7b306e2ffee56642be93d90814ee299 Mon Sep 17 00:00:00 2001 From: Satsuki Yanagi <17376330+u1-liquid@users.noreply.github.com> Date: Thu, 18 Jul 2019 04:22:44 +0900 Subject: Fix signin history (#5180) * Fix #5179 * Fix wrong value in signin history --- src/server/api/common/signin.ts | 18 ++++++++++++++++++ src/server/api/private/signin.ts | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'src/server/api/private') diff --git a/src/server/api/common/signin.ts b/src/server/api/common/signin.ts index 0f4ee4ca11..37229ad1bc 100644 --- a/src/server/api/common/signin.ts +++ b/src/server/api/common/signin.ts @@ -2,6 +2,9 @@ import * as Koa from 'koa'; import config from '../../../config'; import { ILocalUser } from '../../../models/entities/user'; +import { Signins } from '../../../models'; +import { genId } from '../../../misc/gen-id'; +import { publishMainStream } from '../../../services/stream'; export default function(ctx: Koa.BaseContext, user: ILocalUser, redirect = false) { if (redirect) { @@ -24,4 +27,19 @@ export default function(ctx: Koa.BaseContext, user: ILocalUser, redirect = false ctx.body = { i: user.token }; ctx.status = 200; } + + (async () => { + // Append signin history + const record = await Signins.save({ + id: genId(), + createdAt: new Date(), + userId: user.id, + ip: ctx.ip, + headers: ctx.headers, + success: true + }); + + // Publish signin event + publishMainStream(user.id, 'signin', await Signins.pack(record)); + })(); } diff --git a/src/server/api/private/signin.ts b/src/server/api/private/signin.ts index eb267aa604..1e0694368f 100644 --- a/src/server/api/private/signin.ts +++ b/src/server/api/private/signin.ts @@ -61,7 +61,7 @@ export default async (ctx: Koa.BaseContext) => { userId: user.id, ip: ctx.ip, headers: ctx.headers, - success: !!(status || failure) + success: false }); // Publish signin event -- cgit v1.2.3-freya From d8c835fa517a81a11d3946b83076bfdc557d0849 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Thu, 18 Jul 2019 05:26:58 +0900 Subject: Fix signin (#5181) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Revert "Fix signin history (#5180)" This reverts commit a97c14a7b7b306e2ffee56642be93d90814ee299. * fix signin * failはfail専用に * fix password less 200 --- src/server/api/private/signin.ts | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'src/server/api/private') diff --git a/src/server/api/private/signin.ts b/src/server/api/private/signin.ts index 1e0694368f..fa573b69fa 100644 --- a/src/server/api/private/signin.ts +++ b/src/server/api/private/signin.ts @@ -53,9 +53,9 @@ export default async (ctx: Koa.BaseContext) => { // Compare password const same = await bcrypt.compare(password, profile.password!); - async function fail(status?: number, failure?: {error: string}) { + async function fail(status?: number, failure?: { error: string }) { // Append signin history - const record = await Signins.save({ + await Signins.save({ id: genId(), createdAt: new Date(), userId: user.id, @@ -64,23 +64,19 @@ export default async (ctx: Koa.BaseContext) => { success: false }); - // Publish signin event - publishMainStream(user.id, 'signin', await Signins.pack(record)); - - if (status && failure) { - ctx.throw(status, failure); - } + ctx.throw(status || 500, failure || { error: 'someting happened' }); } if (!profile.twoFactorEnabled) { if (same) { signin(ctx, user); + return; } else { await fail(403, { error: 'incorrect password' }); + return; } - return; } if (token) { @@ -169,6 +165,7 @@ export default async (ctx: Koa.BaseContext) => { if (isValid) { signin(ctx, user); + return; } else { await fail(403, { error: 'invalid challenge data' @@ -191,6 +188,7 @@ export default async (ctx: Koa.BaseContext) => { await fail(403, { error: 'no keys found' }); + return; } // 32 byte challenge @@ -219,6 +217,5 @@ export default async (ctx: Koa.BaseContext) => { ctx.status = 200; return; } - - await fail(); + // never get here }; -- cgit v1.2.3-freya From de9bd2651bd85a06746775b3b50c5deef55c5602 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 19 Jul 2019 03:37:34 +0900 Subject: Remove unused import --- src/server/api/private/signin.ts | 1 - 1 file changed, 1 deletion(-) (limited to 'src/server/api/private') diff --git a/src/server/api/private/signin.ts b/src/server/api/private/signin.ts index fa573b69fa..de0e35f500 100644 --- a/src/server/api/private/signin.ts +++ b/src/server/api/private/signin.ts @@ -1,7 +1,6 @@ import * as Koa from 'koa'; import * as bcrypt from 'bcryptjs'; import * as speakeasy from 'speakeasy'; -import { publishMainStream } from '../../../services/stream'; import signin from '../common/signin'; import config from '../../../config'; import { Users, Signins, UserProfiles, UserSecurityKeys, AttestationChallenges } from '../../../models'; -- cgit v1.2.3-freya