53
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Deviseのconfirmableでメール認証を後回しにする

Last updated at Posted at 2013-09-11

やりたいこと

deviseでconfirmableを有効にしてる場合、会員登録のフローでメールアドレスの確認が必要で面倒。
会員登録時のメール認証は省いて後から認証を行ってもらう形を取りたい。

confirmableモジュール

confirmableモジュールの中で認証系を扱っているのは下記のコード。

github.com/plataformatec/devise/blob/master/lib/devise/models/confirmable.rb
def active_for_authentication?
  super && (!confirmation_required? || confirmed? || confirmation_period_valid?)
end

メール認証が完了してない場合に認証チェックメソッドを上書きしてる。これをメール認証が完了してなくても大丈夫なようにオーバーライドしたい。

confirmableモジュールの上書き

deviseのinitializerあたりに下記コードを追加して対応。

config/initializer/devise.rb
Devise::Models::Confirmable.module_eval do
  def active_for_authentication?
    super # コメントアウト && (!confirmation_required? || confirmed? || confirmation_period_valid?)
  end
end

あとはlayoutsにてメールアドレスの確認を促すアラートを出せば良いかと思います。

app/views/layouts/application.html.erb
<% if user_signed_in? && !current_user.confirmed? %>
  <div class="alert">
    メール認証が完了していません!
    <%= link_to "> 再送はこちら", new_user_confirmation_path %>
  </div>
<% end %>

メールの本人確認が出来ていない段階で本サイトにログインできているので、メールを飛ばしたり等の処理の所は気をつけた方がいいですね。

53
46
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?