🐥
helperを使用したアクセス権限
helperとは
helperとはviewやcontrollerでちょっとした処理をやりたい時に使用します。
viewと別の場所(helper)で定義しておいたメソッドをviewから呼び出すことができるものです。
アクセス権限の方法
まずapplication_helper.rb
にadmin_urlのメソッドを定義します。
module ApplicationHelper
def admin_url?
request.fullpath.include?("/admin")
end
end
この admin_url? メソッドは、Railsアプリケーションで管理者用のURLかどうかを判定するためのメソッドです。
具体的には、HTTPリクエストのフルパスに "/admin" が含まれている場合に true を返し、それ以外の場合に false を返します。
以下がこのメソッドの説明です
request.fullpath
: リクエストのフルパスを取得します。これにはホスト名やクエリパラメータなどが含まれます。
include?("/admin")
: フルパスに "/admin" が含まれているかどうかを判定します。含まれている場合は true を返し、含まれていない場合は false を返します。
コントローラの記述
application_controller.rb
に以下の記述を行います。
include ApplicationHelper
before_action :authenticate_admin!, if: :admin_url?
先ほどのhelperメソッドを呼び出し、urlにadminが含まれていればログインしていないユーザーが
管理者側のページに遷移出来ないように設定できます。
最後に
helperではなくcontrollerに記述しても同じ挙動をとるため、個人のお好みで使用してください。
ps
application_controller内で1行にまとめたい場合には以下の記述をしてください
before_action :authenticate_admin!, if: -> { request.path =~ /^\/admin/ }
Discussion