Deviseでパスワード変更した場合のログアウトを防ぐ

またまたDeviseです。
どうもDeviseは自分自身のパスワードを変更した場合、勝手にログアウトするようです。まぁそれはそれで正しい動作な気はしますが、そうしない方法はないかなーと思って探していたら、ありました。

class UsersController < ApplicationController
  load_and_authorize_resource

  def update
    @user.skip_reconfirmation! # メールアドレス変更確認しない
    result = if current_user.id == @user.id
               # 自身の更新ならパスワード入力を求める
               @user.update_with_password(user_params)
             else
               @user.update(user_params)
             end
    if result
      # パスワード変更でログアウトするのを防ぐ
      sign_in(@user, bypass: true) if current_user.id == @user.id
      redirect_to user_path(@user), notice: '更新しました'
    else
      render action: :edit
    end
  end
end

無理矢理、再ログインさせるって感じですかね。


カテゴリー Ruby, Ruby on Rails | タグ | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です