LoginSignup
3
1

More than 1 year has passed since last update.

ゲストのアクセス制限

Posted at

はじめに

ポートフォリオ製作で作成したゲストログイン機能に閲覧制限をかける際に悩んだのでメモとして残そうと思いました。

ゲストログイン機能

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

3
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
3
1