devise(warden)でログイン時にメールアドレス、パスワード以外の条件を追加する
日記帳です。
deviseでメールアドレスとパスワード以外に
ユーザー資格(@user.qualification)があるユーザーという条件を加えてログインさせたい場合
# config/initializer/devise.rb Devise.setup do |config| # 中略 config.warden do |manager| manager.default_strategies(scope: :user).unshift :login_with_qualification # 追加するstrategy名 end end
# config/initializer/warden_strategy.rb Warden::Strategies.add(:login_with_qualification) do # このstrategyを適用するかどうか def valid? params['user'].present? end # 認証 def authenticate! user = User.find_by(email: params['user']['email']) if user.nil? || !user.valid_password?(params['user']['password']) return nil elsif user.qualification.unavailable? # ユーザー資格停止中 fail!('現在ユーザー資格が停止されています。') end end end
wardenのwiki(https://github.com/hassox/warden/wiki/Strategies)等ではsuccess!を呼んで認証させていますが、success!が呼ばれるとその時点で認証が成功と見なされるためここでは呼んでいません。
メールアドレスとパスワードはデフォルトのstrategyでチェックされるのでfail!のみを呼んでいます。
エンジニア
kurashita kurashita
基本的にRuby on Railsで開発してます。最近はvue.jsも。好きな塔は円城です。
TAG
- Android
- AWS
- Bitrise
- CodePipeline
- Firebase
- HTML
- iOS
- IoT
- JavaScript
- KPI
- Linux
- Mac
- Memcached
- MGRe
- MGReのゆるガチエンジニアブログ
- MySQL
- PHP
- PICK UP
- PR
- Python
- Ruby
- Ruby on Rails
- SEO
- Swift
- TIPS
- UI/UX
- VirtualBox
- Wantedly
- Windows
- アクセス解析
- イベントレポート
- エンジニアブログ
- ガジェット
- カスタマーサクセス
- サーバ技術
- サービス
- セキュリティ
- セミナー・展示会
- テクノロジー
- デザイン
- プレスリリース
- マーケティング施策
- マネジメント
- ラボ
- リーンスタートアップ
- 企画
- 会社紹介
- 会社紹介資料
- 勉強会
- 実績紹介
- 拡張性
- 採用
- 日常
- 書籍紹介
- 歓迎会
- 社内イベント
- 社員インタビュー
- 社長ブログ
- 視察
- 開発環境