[Devise How-To]ユーザーのパスワードを自動生成する(シンプルな登録方法)(翻訳)

こんにちは、hachi8833です。
今回より、Railsの認証用gemの定番中の定番であるDevise gemWiki How-Toを順次翻訳いたします。

概要

原文の更新や訳文の誤りにお気づきの場合は、ぜひ@techrachoまでお知らせください。更新いたします。

ユーザーのパスワードを自動生成する(シンプルな登録方法)(翻訳)

最近のWebサイトでは、ユーザーが自分のメールアドレスを入力するだけで「即座に簡単登録できる」機能を搭載するのが当たり前になりつつあります。

登録後ユーザーに送信される確認メールには、自動生成されたパスワードが含まれます。ユーザーがそのパスワードを何らかの理由で気に入らない場合(パスワードが弱すぎるとか、パスワードが強すぎて覚えられないなど)、確認メール内に含まれる確認用リンクをクリックすればすぐにパスワードを変更できます。

以下はslashdot.orgの場合の実装例です。

generated_password = Devise.friendly_token.first(8)
user = User.create!(:email => email, :password => generated_password)

RegistrationMailer.welcome(user, generated_password).deliver

Q&A

質問

  • Devise::RegistrationsController#createアクションはオーバーライドされますか?
  • 実装したコントローラ全体のコードはありますか?
  • 新規作成されたパスワードと一緒に送信されるウェルカムメッセージについて詳しく教えていただけますか?
  • 最後に、パスワード変更リクエスト機能を含む確認ページについても詳しく教えていただけますか?

回答

回答はシンプルでもなく詳しくもありませんが、ご了承ください。

Devise::RegistrationsControllerはオーバーライドされません。そもそも上の例ではDevise::RegistrationsControllerをまったく使っていません。ユーザーがシステムにアカウントを直接作成する手段は提供されていません。ユーザー登録のワークフローがひととおり終わってから、最後に上のコードを使ってアカウントを作成し、ユーザーにメール送信しています。上のコードは、実際には以下のコードと併用しています。

sign_in(:user, user)

これにより、ユーザーは新規ユーザーとしてシームレスにログインできます。ここで言うログインは、ユーザーがページに戻ってきたときのためのものです。メールには /user/edit へのリンクを含めておき、パスワードを変更できるようにしておきます。ただし私はパスワードの変更もメールでの確認も必須にはしていません。

今週末にでも何かブログ記事を書こうと思っていますので、実例についてはそちらでご覧いただけるかと思います。

訳注: (http://blog.plataformatec.com.brなどにはそれらしい記事は見当たりませんでした。

訳注: 原文の最後に、ここでご紹介した設定が最も安全な方法であるとは思っていないと断り書きがあります。

関連記事(Devise)

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833 コボラー、ITコンサル、ローカライズ業界を経てなぜかWeb開発者志願。 これまでにRuby on Rails チュートリアルの大半、Railsガイドのほぼすべてを翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ