初心者SEのつぶやき

初心者SEのつぶやき

【Ruby on Rails】deviseを用いた認証機能を制限したい

やりたいこと

railsアプリケーションにて、deviseを用いた認証機能を制限したい。
例) サインアップ機能の廃止など...
導入方法は下記記事を参照 locomocosan.hatenablog.com

機能を制限する方法

deviseの標準機能を制限するには、app/models/user.rbのファイルを変更必要がある。

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
              :recoverable, :rememberable, :validatable
end

デフォルトで有効になっている機能とモジュールは下記となる。

モジュール 機能
database_authenticatable パスワードの暗号化
registerable サインアップ
recoverable パスワードリセット
rememberable クッキーにログイン情報を保持
validatable バリデーション

追加で使えるモジュールと機能については下記となる。

モジュール 機能
confirmable メール認証
lockable ロックアウト
timeoutable ユーザーセッションのタイムアウト
trackable ユーザーアクティビティをトラッキング
omniauthable 外部プロバイダーを利用した認証

もしサインアップ機能を廃止したい場合は、registerableを削除することで
実装できる。
また、googleアカウントなどの外部のプロバイダーを利用した認証を行いたい
場合、omniauthableを有効にすることで実装が可能になる。(別途設定など必要)

感想

viewやコントローラーの編集、認証機能のカスタマイズなど
まだまだ奥が深そうなので、別の機会にまとめたい。

今回の内容が参考になったら幸いです。