Tech Racho エンジニアの「?」を「!」に。
  • 開発

[Rails] Devise Wiki日本語もくじ1「ワークフローのカスタマイズ」(概要・用途付き)

こんにちは、hachi8833です。
Railsの認証用gemの定番中の定番であるDevise gemHow-To Wiki目次のうち、「ワークフローのカスタマイズ」の章見出しを日本語化し、概要や用途を付けました。今後も随時更新します。

Devise How-To原文は走り書きの傾向があり、見出しが内容を適切に表していなかったり、メモ程度の記述しかないことがあります。しかも記事を開いてみないと更新日がわからないので、こういうのが自分でも欲しかったのでした。

もくじリンク

  1. 「ワークフローのカスタマイズ」(本記事
  2. 「認証方法のカスタマイズ」「OmniAuth」
  3. 「ビュー/コンテンツのカスタマイズ」「特権/認証」
  4. 「テスト」「特殊な設定」
  5. 「アプリでのその他の設定」「JavaScript」
  6. 「他の認証プラグインからの移行」「アップグレード」

Devise How-To: ワークフローのカスタマイズ

※以下は新しい順に並べ替えてあります。

ゲストユーザーを作成する

17 May 2017 · 32 revisions
How To: Create a guest user

ゲストのUserオブジェクトを使って、ログインしていない一般ユーザーでもセッションを管理できるようにする方法です。ここではゲストのオブジェクトを作成してidをsession[:guest_user_id]でデータベースに保存し、current_or_guest_userでゲストかどうかを判定します。

パスワード変更をユーザーにメール通知する

12 Apr 2017 · 7 revisions
Notify users via email when their passwords change

この機能はDevise 3.5.3からありますが、デフォルトではオフになっています。devise.rbで設定を変更するだけで機能を有効にできます。

サインイン・サインアウト・サインアップ・プロファイル更新後に元のページにリダイレクトする

27 Mar 2017 · 35 revisions
How To: Redirect back to current page after sign in, sign out, sign up, update

ユーザーがアカウント操作を行った後、ユーザーが元いたページにリダイレクトされるようにします。

Deviseでカスタムのメールバリデータを使う

24 Feb 2017 · 6 revisions
How to: Use a custom email validator with Devise

メールバリデータのコード例が掲載されています。カスタムメールバリデータはDeviseを改変しなくても使えます。

Devise自身のメールバリデータはあえてメールアドレスを極力リジェクトしない方針なので、入力されたメールアドレスが誤っているとユーザーに配信されない可能性もあります(メール配信側の問題による可能性もあります)。

セッション終了(サインアウト)後のリダイレクト先をカスタマイズする

17 Feb 2017 · 8 revisions
How To: Change the redirect path after destroying a session i.e. signing out

ユーザーがログアウトした後に特定のページにリダイレクトする方法です。モデルのインスタンスが複数ある場合の方法も紹介されています。

ユーザーが自分のパスワードを変更できるようにする

10 Jan 2017 · 48 revisions
How To: Allow users to edit their password

ビューだけで行う方法(新しいDeviseとStrong ParametersではApplicationControllerの変更も必要)、既存ユーザーにのみパスワード変更を許可してユーザー登録機能を無効にする方法、Deviseに手を加えずにパスワードの変更方法を独自実装する方法が紹介されています。


サインアップ(登録)に成功したら特定のページにリダイレクトする

13 Dec 2016 · 13 revisions
How To: Redirect to a specific page on successful sign up (registration)

「Rails 5 + Devise 4.2ではこの方法で動かなかったのでこのエントリは削除する方がよいのではないか」という指摘があります。最終的に「サインイン・サインアウト・サインアップ後に元のページにリダイレクトする」(←注意: How-Toの目次にはエントリがありません)でできたそうです。

sign_inとsign_outのデフォルトルーティングを変更する

5 Nov 2016 · 7 revisions
sign_inとsign_outのデフォルトルーティングを変更する原文

Deviseのデフォルトルーティング(/users/sign_in/users/sign_out)を/login/logoutなどに変更する方法です。

サインイン/アウトに成功したら特定のページにリダイレクトする

2 Sep 2016 · 14 revisions
How To: Redirect to a specific page on successful sign in out

ApplicationControllerでafter_sign_in_path_forヘルパーやafter_sign_out_path_forヘルパーを使ってリダイレクトします。サインイン後にユーザーを元のページにリダイレクトするには、request.fullpathを使うのが簡単です。サインアウト後のリダイレクト先は自由に設定できますが、サインイン後のリダイレクト先はそうではありません。

サインイン/サインアウト時に特定のページにリダイレクトする

2 Sep 2016 · 14 revisions
How To: Redirect to a specific page on successful sign in out

ログイン後やログアウト後のリダイレクト先を特定のページに変更する方法です。

デフォルトのSign_up登録パスをカスタムパスに変更する

20 Aug 2016 · 5 revisions
デフォルトのSign_up登録パスをカスタムパスに変更する原文

新規ユーザーの登録(=サインアップ)URLをDeviseデフォルトの/users/sign_upから/sign_upなどに変更する方法です。

管理者がアカウントを有効にするまでsign_inできないようにする

18 Aug 2016 · 17 revisions
How To: Require admin to activate account before sign_in"

confirmableモジュールを使わず、管理者(モデレーター: moderator)が承認するまでユーザーのアカウントを有効にしないようにする方法です。

Deviseで単一ユーザーシステムを構築する

10 Aug 2016 · 10 revisions
How To: Set up devise as a single user system

個人ブログアプリなど、ユーザーが1人に限定されたプライベートアプリをDeviseで構築する際に、新規ユーザー登録ページを非公開にする方法です。ユーザーが1人も登録されていない状態で一般ユーザーが登録ページにアクセスしようとするとトップにリダイレクトされ、ユーザーが1人登録済みの場合はsign_inページにリダイレクトされます。

確認をオーバーライドして、確認中にユーザーが独自のパスワードを選べるようにする

1 Jul 2016 · 73 revisions
How To: Override confirmations so users can pick their own passwords as part of confirmation activation

ユーザー名かメールアドレスだけを入力すればアカウントを作れるアプリで、ユーザーが自分に送信された登録確認メールのリンクをクリックすると、アプリの登録確認画面でユーザーが自分の使いたいパスワードを選択できるようにする方法です。以下の場合について詳細な手順が記載されています。

  • Rails 3/4、Devise 3.1〜3.5.1
  • Rails 3/4、Devise 2.x〜3.0、Devise 3.5.2以降
  • Rails 2.3、Devise 1.0.9

サインインに成功したら特定のページにリダイレクトする

15 Jun 2016 · 21 revisions
How To: redirect to a specific page on successful sign in

ログイン後に直前のページに戻る方法、OAuthでログイン後に直前のページに戻る方法、OAuthでログインできなかった場合に直前のページに戻る方法、リダイレクトのループを防ぐ方法が紹介されています。

2段階認証

11 Jun 2016 · 2 revisions
How To: Two step confirmation

以下の2つの記事への内部リンクのみです。具体的な手法は記載されていません。

アカウント削除後のUserデータを保存する(論理削除)

11 Feb 2016 · 6 revisions
How to: Soft delete a user when user deletes account

ユーザーがアカウントを削除してもユーザーのデータを実際には消さずに保存しておき、単にアカウントを無効にする方法です。

全ページで認証を必須にする

16 Jan 2016 · 6 revisions
How To: Require authentication for all pages

全ページで認証を必須にし、かつアプリのルートで「サインインが必要です」メッセージを表示しないようにします。database_authenticatableなしでomniauthableを使う場合は方法が少し異なります。


ユーザープロファイル編集後のリダイレクトをカスタマイズする

5 Apr 2015 · 11 revisions
How To: Customize the redirect after a user edits their profile

ユーザーが自分のプロファイルを変更した後に特定のページにリダイレクトする方法です。Devise::RegistrationsControllerのサブクラスを作る方法と、ルーティングだけで行う方法の2つが紹介されています。

ローカライズされたスコープでOmniAuthを使う

18 Mar 2015 · 4 revisions
How To: OmniAuth inside localized scope

セッションで設定されているロケールのスコープに沿ってOmniAuthで認証する方法です。

ユーザーを認証できなかった場合に特定のページにリダイレクトする

16 Mar 2015 · 17 revisions
How To: Redirect to a specific page when the user can not be authenticated

特定のサブドメインでフルパスのURLを使った例が紹介されています。DeviseはデフォルトではフルパスのURLを使わないため、Devise::FailureAppを継承したカスタムfailure appでフルパスのURLに対応しています。Rails 3と4、Rails 2のサンプルコードがあります。

認証失敗後のリダイレクトにロケールを適用する

18 Feb 2015 · 5 revisions
How To: Redirect with locale after authentication failure

認証失敗後のリダイレクト先ページをロケールに応じて変える方法です。Railsのi18n APIに記載されている方法とは異なります。


パスワードの最小文字数をカスタマイズする

1 Oct 2014 · 1 revision
Customize minimum password length

アプリ全体での設定方法と、モデルごとに最小文字数を設定する方法が紹介されています。

セッションタイムアウト後にログインページにリダイレクトしないようにする

23 Jul 2014 · 8 revisions
How To: Do not redirect to login page after session timeout

デフォルトのDeviseではセッションタイムアウト後にユーザーをログインページにリダイレクトするので、Devise::FailureAppを継承したカスタムfailure appで動作を変更します。

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

28 Jan 2014 · 3 revisions
ユーザーのパスワードを自動生成する(シンプルな登録方法)原文

新規ユーザーにメールアドレスだけを入力させ、パスワードを自動生成してメール送信する方法です。


サインインおよびサインアウトに成功したら特定のページにリダイレクトする

15 Jun 2013 · 2 revisions
How To: Redirect to a specific page on successful sign in and sign out

ApplicationControllerに#after_sign_in_path_for#after_sign_out_path_forを定義してリダイレクトする方法と、ログアウト後にリダイレクトしないようにする方法です。

サインイン成功時、またはサインアウト成功時に特定のページにリダイレクトする

15 Jun 2013 · 2 revisions
How To: Redirect to a specific page on successful sign in and sign out

Deviseのデフォルトであるroot_pathへのリダイレクトをモデル名_root_pathで変更できます。ルートURL /にアクセスした一般ユーザーを単にログインページにリダイレクトしたい場合は、#authenticatedというルーティングヘルパーメソッドを使うのが簡単です。
Rails 4以後は名前の同じルーティングが2つあるとアプリ読み込み時に例外が発生しますので注意が必要です。authenticated_root_pathroot_pathは異なるルーティング名ですが同じURLに応答します。


ユーザー登録ページへのルーティングをカスタマイズする

Aug 2012 · 2 revisions
ユーザー登録ページへのルーティングをカスタマイズする原文

Deviseのユーザーモデルが2つある場合にそれぞれについてsign_upsign_inを設定する方法です。

サインアウトに成功したらHTTPSからHTTPにリダイレクトする

13 Jun 2012 · 1 revision
How To: redirect from HTTPS to HTTP on successful sign out

ログイン中はアプリへのアクセスをHTTPSにし、ログアウトしたらHTTPに戻す方法です。

補足

  • 原文ではsign inとlog in、sign outとlog outがそれぞれ同じ意味で使われています。訳文では、紛らわしくなる場合を除き、原則として原文に沿ったカタカナを使用します。
  • 同じ手順が複数のカテゴリに含まれていることもあります(原文に従っています)
  • 原文が更新されていることにお気づきの場合は、ぜひ@hachi8833までお知らせください。更新いたします。

関連記事(Devise)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。