とーますメモ

Ruby on Rails / Goなどの学習メモ

【Shopify × Rails】ShopifyAppに手動でログインする方法

自分用メモ。

shopify_appを使用しているなら通常は
未ログイン状態の場合、ログイン画面に遷移し、omniauthを通じた認証が行われる。

認証後はセッションにShopify情報にアクセスするためのセッションが保存される。

ただ自分の場合、Activeadminと組み合わせて使用する。
その場合、ShopifyApp::AuthenticatedControllerを継承したコントローラをActiveadminでは
作れないっぽいので、どうにかしてShopifyログイン経由でActiveadminのコントローラにアクセスしたい。

そのためには、一度ShopifyApp::AuthenticatedControllerを継承したコントローラにアクセス後
リダイレクトして飛ばしてやればよい。
また各Activeadminコントローラに以下の設定をすれば
セッション切れを起こしてもログイン画面に遷移し、ログイン認証を再び行える。

  controller do
    include ShopifyApp::LoginProtection

    before_action :login_again_if_different_shop
    around_action :shopify_session

    def index
      super
    end
    ...
  end

[参考]
https://github.com/Shopify/shopify_app/blob/b22824003af168298d727f639a49503d29ca2ac6/app/controllers/shopify_app/authenticated_controller.rb https://github.com/Shopify/shopify_app/blob/53b2807fed4c45590b3feb5445d05c702af6524b/lib/shopify_app/controller_concerns/login_protection.rb