takuyahori
@takuyahori (堀 拓也)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

deviseで複数モデル管理をしている際のauthenticate_user!メソッドの記述について

Q&A

Closed

解決したいこと

画像投稿アプリを作成しておりまして、ログインしていないユーザーが、URLの直接入力にて投稿編集ページに
飛べないようにauthenticate_user!メソッドを使用したのですが、trainerとcliantの2パターンでユーザー
登録を分けているため、例えばcliantがログインしている場合はauthenticate_trainer!が働いてしまい、
うまくいきません。
deviseで複数モデル管理をしている場合のauthenticate_user!メソッドの記述方法についてご教示
いただきたいです。

該当するソースコード

application.controller
class ApplicationController < ActionController::Base
  before_action :basic_auth
  before_action :authenticate_trainer!, except: [:index, :show]
  before_action :authenticate_cliant!, except: [:index, :show]

  def after_sign_in_path_for(resource)
    posts_path(resource)
  end

  def basic_auth
    authenticate_or_request_with_http_basic do |username, password|
      username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"]
    end
  end
end

自分で試したこと

application.controller
class ApplicationController < ActionController::Base
  before_action :basic_auth
  before_action :authenticate_any!

  def authenticate_any!
    if cliant_signed_in?
      true
    else
      authenticate_trainer!
    end
  end

  def after_sign_in_path_for(resource)
    posts_path(resource)
  end

  def basic_auth
    authenticate_or_request_with_http_basic do |username, password|
      username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"]
    end
  end
end

上記のように自分でメソッドを作って記述もしてみましたがうまくいかず、、、
アドバイスお願い致します。

0

No Answers yet.

Your answer might help someone💌