現状の課題

ユーザー新規登録時に、email認証せずに登録が完了してしまう。

理想

  1. ユーザー仮登録
  2. メールアドレス認証
  3. ログイン処理
    の流れでユーザーを登録できるようにしたい。

ユースケース

  1. ログイン画面 /login でSign upのリンクを押す
  2. フォームに User ID / Name / Email / Password を入力する
  3. Sign up ボタンを押す 仮登録完了
  4. 入力したEmail に 認証URL付きのメールが届く
  5. ユーザーが認証URLをクリックする
  6. 認証が成功し、「本登録完了」ページへリダイレクトされる
    本登録(仮登録時に保存されたuserドキュメントのステータスがActiveになる)
    ID/Password の認証機構設定で登録の制限を「制限」にしている場合は、Approval Pending隣、管理者が承認して初めてActiveになる。
  7. ログイン画面にて、ユーザーが指定した1. user name or emailと2. passwordを入力しログインできる

仮登録時のDataの保存場所

  • 新規にコレクションを作成し、そこに保存させる user-registration-order

  • 本登録完了時

    • user collectionに保存される
      • statusはactive
  • 仮登録で生成されて本登録までいかなかったorderの処置

    • 放置される。

セキュリティ関連

ID/Password の認証機構設定

セキュリティ設定内の ID/Password の認証機構設定にて登録の制限を「制限」にしている場合、新規登録後のユーザーは、管理者によるアカウントの承認が行われるまでApproval Pendingの状態になります。

「制限」していない場合のユーザーステータス

  1. ユーザー仮登録時: STATUS_PROVISIONAL
  2. 本登録完了時: STATUS_ACTIVE
  3. ログイン

「制限」している場合のユーザーステータス

  1. ユーザー仮登録時: STATUS_PROVISIONAL
  2. 本登録完了時: STATUS_REGISTERED
  3. 管理者によるアカウントの承認完了時: STATUS_ACTIVE
  4. ログイン

質問

本登録まで行かずに放置されたuserの処置

  • 仮登録から本登録まで24h(仮)が経過すると仮登録が無効になる(?)
    • それとも放置でいいのかな
  • ユーザー管理のテーブルに仮登録されたユーザーを表示されるようにする(?) Screen Shot 2021-09-03 at 16.54.53.png

参考にできる他の機能

  • パスワードリセット機能(Forgot Password?)
    • ワンタイムURLの発行
    • ワンタイムURLによる認証
    • Email送信