From 025ae436b5fcb0a019962807f0f79068f135038f Mon Sep 17 00:00:00 2001 From: yukineko <27853966+hideki0403@users.noreply.github.com> Date: Fri, 3 Nov 2023 14:54:28 +0900 Subject: enhance: アカウント登録時のメールアドレス認証に30分の有効期限を設定 (#12221) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add: metaにemailVerificationExpiresInを追加 * enhance: 招待コード使用時, メアド認証時に認証期限を確認するように * add: クライアント側に実装 * update: CHANGELOG.md * add: コメントを追加 * Revert "add: metaにemailVerificationExpiresInを追加" This reverts commit ceb6ccff51a406bfd87b4da6c59401ce5551dd95. * Revert "add: コメントを追加" This reverts commit 7ee301c3eed4ded295490a6614650a3720317772. * change(client): メール認証の有効期限を30分で固定するように変更 * change(backend): メール認証の有効期限を30分で固定するように変更 * update: CHANGELOG.md --- packages/backend/src/server/api/SignupApiService.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'packages/backend/src/server/api/SignupApiService.ts') diff --git a/packages/backend/src/server/api/SignupApiService.ts b/packages/backend/src/server/api/SignupApiService.ts index d2c4440116..d6f4df7f13 100644 --- a/packages/backend/src/server/api/SignupApiService.ts +++ b/packages/backend/src/server/api/SignupApiService.ts @@ -136,7 +136,20 @@ export class SignupApiService { return; } - if (ticket.usedAt) { + // メアド認証が有効の場合 + if (instance.emailRequiredForSignup) { + // メアド認証済みならエラー + if (ticket.usedBy) { + reply.code(400); + return; + } + + // 認証しておらず、メール送信から30分以内ならエラー + if (ticket.usedAt && ticket.usedAt.getTime() + (1000 * 60 * 30) > Date.now()) { + reply.code(400); + return; + } + } else if (ticket.usedAt) { reply.code(400); return; } @@ -224,6 +237,10 @@ export class SignupApiService { try { const pendingUser = await this.userPendingsRepository.findOneByOrFail({ code }); + if (this.idService.parse(pendingUser.id).date.getTime() + (1000 * 60 * 30) < Date.now()) { + throw new FastifyReplyError(400, 'EXPIRED'); + } + const { account, secret } = await this.signupService.signup({ username: pendingUser.username, passwordHash: pendingUser.password, -- cgit v1.2.3-freya