summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryukineko <27853966+hideki0403@users.noreply.github.com>2023-11-03 14:54:28 +0900
committerGitHub <noreply@github.com>2023-11-03 14:54:28 +0900
commit025ae436b5fcb0a019962807f0f79068f135038f (patch)
tree577ca4e2022fa1d7c8bbd8deda4478a1db304532
parentupdate deps (diff)
downloadsharkey-025ae436b5fcb0a019962807f0f79068f135038f.tar.gz
sharkey-025ae436b5fcb0a019962807f0f79068f135038f.tar.bz2
sharkey-025ae436b5fcb0a019962807f0f79068f135038f.zip
enhance: アカウント登録時のメールアドレス認証に30分の有効期限を設定 (#12221)
* 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
-rw-r--r--CHANGELOG.md3
-rw-r--r--locales/index.d.ts1
-rw-r--r--locales/ja-JP.yml3
-rw-r--r--packages/backend/src/server/api/SignupApiService.ts19
-rw-r--r--packages/frontend/src/pages/signup-complete.vue3
5 files changed, 26 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bbf99bee95..6837cf6e1b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,9 @@
- Enhance: 未読の通知数を表示できるように
- Enhance: ローカリゼーションの更新
- Enhance: 依存関係の更新
+- Enhance: アカウント登録時のメールアドレス認証に30分の有効期限を設定
+ - 有効期限が切れた後であれば、登録時に使用した招待コードを再度利用できるように変更しました。
+ - ユーザーが誤ったメールアドレスを入力した場合に招待コードが失効してしまう問題が解消されます。
- Change: CWを使用する場合、注釈を空にすることは許可されなくなりました
### Client
diff --git a/locales/index.d.ts b/locales/index.d.ts
index b8dc3a68bc..f6db40e944 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -1158,6 +1158,7 @@ export interface Locale {
"pullDownToRefresh": string;
"disableStreamingTimeline": string;
"useGroupedNotifications": string;
+ "signupPendingError": string;
"cwNotationRequired": string;
"_announcement": {
"forExistingUsers": string;
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 76b5386b39..1b79c399e7 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -1155,6 +1155,7 @@ refreshing: "リロード中"
pullDownToRefresh: "引っ張ってリロード"
disableStreamingTimeline: "タイムラインのリアルタイム更新を無効にする"
useGroupedNotifications: "通知をグルーピングして表示する"
+signupPendingError: "メールアドレスの確認中に問題が発生しました。リンクの有効期限が切れている可能性があります。"
cwNotationRequired: "「内容を隠す」がオンの場合は注釈の記述が必要です。"
_announcement:
@@ -1554,7 +1555,7 @@ _ffVisibility:
_signup:
almostThere: "ほとんど完了です"
emailAddressInfo: "あなたが使っているメールアドレスを入力してください。メールアドレスが公開されることはありません。"
- emailSent: "入力されたメールアドレス({email})宛に確認のメールが送信されました。メールに記載されたリンクにアクセスすると、アカウントの作成が完了します。"
+ emailSent: "入力されたメールアドレス({email})宛に確認のメールが送信されました。メールに記載されたリンクにアクセスすると、アカウントの作成が完了します。メールに記載されているリンクの有効期限は30分です。"
_accountDelete:
accountDelete: "アカウントの削除"
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,
diff --git a/packages/frontend/src/pages/signup-complete.vue b/packages/frontend/src/pages/signup-complete.vue
index e9c89fa3bb..d9a730851d 100644
--- a/packages/frontend/src/pages/signup-complete.vue
+++ b/packages/frontend/src/pages/signup-complete.vue
@@ -51,7 +51,8 @@ function submit() {
os.alert({
type: 'error',
- text: i18n.ts.somethingHappened,
+ title: i18n.ts.somethingHappened,
+ text: i18n.ts.signupPendingError,
});
});
}