私の 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 は何も実行しなくなります。