ゲストログイン機能をつける

やりたいこと

ポートフォリオ作成中なのですが、ユーザーさんに気軽に使って頂くためゲストログイン機能をつけたい。

ちなみログイン認証はsorceryで行っています。


調査

rails ゲストログイン機能と検索

qiita.com

blog.aiandrox.com

調査した結果、sorceryのメソッドであるauto_login(user)を使ってゲストログイン機能をつけていきます。


実装

view

<%= link_to t('.guest_login'), 'guest_login', method: :post %>

routes.rb

post 'guest_login', to: 'user_sessions#guest_login'

user_sessions_controller.rb

  skip_before_action :require_login, only: %i[guest_login]

  def guest_login
    redirect_to root_path, alert: 'すでにログインしています' if current_user # ログインしてる場合はユーザーを作成しない

    random_value = SecureRandom.hex
    user = User.create!(name: random_value, email: "test_#{random_value}@example.com", password: "#{random_value}", password_confirmation: "#{random_value}", role: :guest)
    auto_login(user)
    redirect_to  select_food_combinations_path, notice: 'ゲストとしてログインしました'
  end

こんな感じで、ゲストログイン時に新たにユーザーを作成するようにする。

ログインするたびに新規ユーザーを作成するので、それぞれのゲストユーザーのデータが競合しない。