サンプルアプリケーションの現状と、これから実装する変更内容
Railsチュートリアルの第10章終了時点では、「新規登録したユーザーは、はじめからすべての機能にアクセスできる」という実装となっています。第11章では、「アカウントを有効化するステップを新規登録の途中に差し込むことで、本当にそのメールアドレスの持ち主なのかを確認する」という機能を実装していきます。
アカウントの有効化プロセス
概要
「アカウントの有効化」というユースケースは、大まかには以下のプロセスからなります。
- 有効化トークン・ダイジェストを新規に生成したユーザー情報と関連付ける
- 有効化トークンを含むリンクを、ユーザーにメールで送信する
- ユーザーが2.のリンクをクリックすると、当該アカウントが有効化される
詳細
上記「アカウントの有効化プロセスの概要」をさらに詳細に見ていくと、以下のような機能の実装が必要となるのがわかります。
- ユーザーの初期状態は、「有効化されていない(unactivated)」であること
- ユーザー登録が行われた際に、以下が生成されること
- 有効化トークン
- 当該有効化トークンに対応する有効化ダイジェスト
- 有効化ダイジェストがRDBに保存されること
- 新規登録ユーザーの登録メールアドレス宛に有効化用メールが送信されること
- 当該有効化用メール中に記載されるリンクに有効化トークンが含まれること
- 有効化トークンの認証機能
- ユーザーが有効化用メール中のリンクをクリックしたことが検出できる機能
- 登録メールアドレスをキーとしてユーザーを検索する機能
- ユーザーから送信された有効化トークンと、RDB中の有効化ダイジェストを比較する機能
- ユーザーの状態を「有効化されていない」から「有効化済み(activated)」に変更する機能
- 有効化トークンの認証に成功した時点で変更される
実は、上記の仕組みは、これまで実装してきた「パスワード」「(永続cookiesにおける)記憶トークン」の仕組みとよく似ています。少なからぬメソッドは使いまわしも可能なのです。
検索キー | string | digest | authentication |
---|---|---|---|
email |
password |
password_digest |
authenticate(password) |
id |
remember_token |
remember_digest |
authenticated?(:remember, token) |
email |
activation_token |
activation_digest |
authenticated?(:activation, token) |
email |
reset_token |
reset_digest |
ahthenticated?(:reset, token) |
第11章で行う実装
- アカウント有効化に必要なリソースやデータモデルの生成
- アカウント有効化時のメール送信部分の実装
- Railsの
mailer
機能を用いる
- Railsの
-
User#authenticated?
メソッドの機能拡張 - アカウント有効化処理の本体の実装
- 機能拡張した
User#authenticated?
を用いる
- 機能拡張した