Packages
shopifex
0.3.0
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
require Logger
@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 ->
Logger.info("Found valid shop in session")
conn
|> put_shop_in_session(shop)
_ ->
Logger.info("No valid shop in session")
path_prefix = Application.get_env(:shopifex, :path_prefix, "")
conn
|> Phoenix.Controller.redirect(to: "#{path_prefix}/auth?#{conn.query_string}")
|> halt()
end
end
def put_shop_in_session(conn, shop) do
shop_url = shop.url
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