はじめに
ポートフォリオ製作で作成したゲストログイン機能に閲覧制限をかける際に悩んだのでメモとして残そうと思いました。
ゲストログイン機能
class Menber < ApplicationRecord
# ゲストユーザー
def self.guest_user
find_or_create_by!(email: 'guest_user@example.com') do |guest|
guest.password = SecureRandom.urlsafe_base64
end
end
end
class Admin::SessionsController < Devise::SessionsController
def guest_log_in
guest = Menber.guest_user
sign_in guest # ユーザーをログインさせる
redirect_to root_path, notice: 'ゲストユーザーとしてログインしました。'
end
end
やりたいこと
本会員とゲストでアクセス制限を分けたい。
やったこと
ヘルパーメソッドであるauthenticate_userメソッドを使用したいと考えましたが、使用しているゲストログイン機能だと内部的には本会員と同じ扱いを受けてしまっているので、区別するため新たに作成することにしました。
#補足:作成時、既にゲストユーザーにはMenber id:1を渡してあります。
def guest_check
if current_menber == Menber.find(1)
redirect_to root_path,notice: "このページを見るには会員登録が必要です。"
end
end
制限をかけたいコントローラーに記述。
# ゲストユーザーとしてログインした場合は閲覧を制限する
before_action :guest_check
以上で終了です。
初学者のため、沢山の方にご教授いただきたいと思っております。
読んでいただきありがとうございました!
authenticate_userについての参考文献
https://qiita.com/gogotakataka1234/items/c7d5c0b3d8953216259e