0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Sorceryでよく使うメソッド

Posted at

##current_user
現在ログイン中のuserを返す。コントローラ、ビューで利用可能。

##require_login
ログインをしていないユーザーをアクション単位で弾く。
アクセスしようとしたURLをセッションに格納し、not_authenticatedを実行するメソッド。before_actionで指定する。
アクションごとに変える場合は、only: :actionを付ける。

#controller
before_action :require_login

##not_authenticated
require_login内で、このメソッドが実行される。
デフォルトではredirect_to root_path(自動的にルートに飛ばされる)と定義されているが、カスタマイズしたい場合はapplication_controllerで上書きをする。

class ApplicationController < ActionController::Base
  protected

  def not_authenticated
    redirect_to login_url, alert: 'ログインしてください'
  end
end

##logged_in?
require_loginと比べて、アクション内の分岐などもっと細かい単位で弾きたい場合に使用。

現在ログイン中かどうか、true or falseで返す。コントローラ、ビューで使える。
ログインしているかどうかによって場合分けをしたいときに使う。

#view
<% if logged_in? %>
  <%= link_to 'プロフィール', user_url(current_user) %>
<% else %>
  <%= link_to 'ログイン', login_url %>
<% end %>

##auto_login(user)
メールアドレスやパスワードを使わずuserとしてログインする。(オートログイン)
想定される使い方としては下記が挙げられる。
・ユーザー登録後の自動ログイン
・ゲストユーザーログイン
・開発環境でのログイン

ユーザー登録後の自動ログイン

#controller

def create
    @user = User.new(user_params)
    if @user.save
      auto_login(@user)
      redirect_to root_url, notice: 'ユーザーを登録しました'
    else
      flash.now[:alert] = 'ユーザーが登録できませんでした'
      render :new
    end

ゲストユーザーログイン

#controller

def guest_login
    guest_user = User.find_by!(role: 'guest')
    auto_login(guest_user)
    redirect_to root_path, notice: 'ログインしました'
  end

開発環境でのログイン

#controller

def login_as
    user = User.find(params[:user_id])
    auto_login(user)
    redirect_to root_path, notice: "#{Rails.env}環境でログインしました"
  end
#routes

if Rails.env.development?
    get '/login_as/:user_id', to: 'user_sessions#login_as', as: :login_as
  end

「/login_as/1」などにアクセスすると自動的にそのユーザーとしてログインする」ので、if Rails.env.development?必ず付ける

その他メソッドはここ

##参考記事
【Sorcery】Sorceryで使えるようになるメソッドとその活用例

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?