🐥

helperを使用したアクセス権限

2024/02/06に公開

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