Packages
shopifex
0.1.3
2.4.0
2.3.0
2.2.2
2.2.1
2.2.0
2.1.20
2.1.19
2.1.18
2.1.17
2.1.16
2.1.15
2.1.14
2.1.13
2.1.12
2.1.11
2.1.10
2.1.9
2.1.8
2.1.7
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.1
2.0.0
1.1.1
1.1.0
1.0.1
1.0.0
0.6.2
0.6.1
0.6.0
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Phoenix boilerplate for Shopify Embedded App SDK
Current section
Files
Jump to
Current section
Files
lib/shopifex/plug/shopify_session.ex
defmodule Shopifex.Plug.ShopifySession do
import Plug.Conn
@moduledoc """
Ensures that a valid store is currently loaded in the session and is accessible in your controllers/templates as `conn.private.shop`
"""
def init(options) do
# initialize options
options
end
def call(conn, _) do
shop_schema = Application.fetch_env!(:shopifex, :shop_schema)
case Phoenix.Controller.get_flash(conn, :shop) do
%{__struct__: ^shop_schema} = _shop ->
conn
|> put_shop_in_session()
_ ->
conn
|> Phoenix.Controller.redirect(to: "/auth?#{conn.query_string}")
|> halt()
end
end
defp put_shop_in_session(conn, _opts \\ []) do
shop_url = Phoenix.Controller.get_flash(conn, :shop_url)
shop = Phoenix.Controller.get_flash(conn, :shop)
Plug.Conn.put_private(conn, :shop_url, shop_url)
|> Phoenix.Controller.put_flash(:shop_url, shop_url)
|> Plug.Conn.put_private(:shop, shop)
|> Phoenix.Controller.put_flash(:shop, shop)
end
end