Rails は、特定のユーザータイプのパスワード回復を無効にするよう工夫します

概要

私の Rails プロジェクトにはさまざまなタイプのユーザーがおり、そのうちの 1 人には user_status :admin があり、他のユーザーとは異なりコンテンツを編集する完全な権限があります。明らかな理由から、このようなタイプのユーザーに対してセキュリティを追加し、特にパスワードの回復を完全に無効にしたいと考えています。

標準の Devise パスワード回復 (:recoverable Devise モジュール) メソッドをオーバーライドして、ユーザーが管理者ユーザー (user_status == “admin”) のパスワード リセット リンクを取得しようとしたときにシステムが返す正しい方法は何ですか? 「標準メールが見つかりません」というメッセージが表示されましたか?

これは、未回答の質問「Devis のパスワード回復を特定のユーザーのみに制限する」に似ています。

よろしくお願いします。

解決策

私が選択し、うまくいった方法は、models/user.rb に以下を追加することで、User モデルの send_reset_password_instructions メソッドをオーバーライドすることでした。

def send_reset_password_instructions
  return false if self.user_status == 'admin'
  super
end

これにより、電子メールが管理者アカウントに属している場合、Devise は何も実行しなくなります。