🐥
Rails ゲストログイン機能
はじめに
ポートフォリオ作成中のプログラミング初学者です!
今日はポートフォリオに必須のゲストログイン機能を実装しました。
実装
ゲストログイン機能の設定
- SessionsControllerに新しいアクションguest_sign_inを準備します。
config/routes.rb
devise_scope :end_user do
post 'end_users/guest_sign_in', to: 'public/sessions#guest_sign_in'
end
- アクションguest_sign_inを設定
app/controllers/public/sessions_controller.rb
class Public::SessionsController < Devise::SessionsController
def guest_sign_in
end_user = EndUser.guest
sign_in end_user
redirect_to root_path, notice: 'ゲストユーザーとしてログインしました。'
end
end
- 以下を追加
- email: 'guest@example.com'に一致するレコードをデータベースから探し、見つからなかった場合に新しいレコードを作成。
-
SecureRandom.urlsafe_base64
は、RubyのSecureRandomモジュールの一部で、ランダムなURLで安全に使用できるパスワードを生成します。
app/models/end_user.rb
:
def self.guest
find_or_create_by!(email: 'guest@example.com') do |end_user|
end_user.password = SecureRandom.urlsafe_base64
# user.confirmed_at = Time.now # Confirmable を使用している場合は必要
# 例えば name を入力必須としているならば, user.name = "ゲスト" なども必要
end
end
- ヘッターにリンクを追加しました!
app/views/layouts/_header.html.erb
<%= link_to 'ゲストログイン', end_users_guest_sign_in_path, class: "nav-link", method: :post do %>
さいごに
下記の記事で、グストユーザーを削除できないようにする方法&メールアドレス・パスワードを変更できないようにする方法まで詳しく書いてあるので、実装する場合はそちらをご覧ください!
参考にさせていただいた記事🌱
Discussion