shopify_app 9.0.0 → 12.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +0 -2
- data/CHANGELOG.md +145 -0
- data/README.md +180 -126
- data/app/assets/javascripts/shopify_app/itp_helper.js +6 -6
- data/app/assets/javascripts/shopify_app/storage_access.js +36 -7
- data/app/controllers/concerns/shopify_app/authenticated.rb +1 -1
- data/app/controllers/shopify_app/callback_controller.rb +14 -5
- data/app/controllers/shopify_app/extension_verification_controller.rb +20 -0
- data/app/controllers/shopify_app/sessions_controller.rb +44 -18
- data/app/views/shopify_app/sessions/enable_cookies.html.erb +3 -1
- data/app/views/shopify_app/sessions/request_storage_access.html.erb +2 -1
- data/app/views/shopify_app/sessions/top_level_interaction.html.erb +1 -0
- data/app/views/shopify_app/shared/redirect.html.erb +1 -0
- data/config/locales/cs.yml +23 -0
- data/config/locales/da.yml +20 -0
- data/config/locales/de.yml +5 -5
- data/config/locales/en.yml +1 -1
- data/config/locales/es.yml +3 -3
- data/config/locales/fi.yml +20 -0
- data/config/locales/fr.yml +3 -3
- data/config/locales/hi.yml +23 -0
- data/config/locales/it.yml +2 -3
- data/config/locales/ja.yml +1 -1
- data/config/locales/ko.yml +19 -0
- data/config/locales/ms.yml +22 -0
- data/config/locales/nb.yml +21 -0
- data/config/locales/nl.yml +3 -3
- data/config/locales/pl.yml +21 -0
- data/config/locales/pt-BR.yml +9 -10
- data/config/locales/pt-PT.yml +22 -0
- data/config/locales/sv.yml +21 -0
- data/config/locales/th.yml +20 -0
- data/config/locales/tr.yml +22 -0
- data/config/locales/zh-CN.yml +3 -3
- data/config/locales/zh-TW.yml +1 -2
- data/docs/Quickstart.md +44 -16
- data/docs/Releasing.md +0 -1
- data/docs/install-on-dev-shop.png +0 -0
- data/docs/test-your-app.png +0 -0
- data/karma.conf.js +1 -0
- data/lib/generators/shopify_app/add_after_authenticate_job/add_after_authenticate_job_generator.rb +2 -2
- data/lib/generators/shopify_app/add_marketing_activity_extension/add_marketing_activity_extension_generator.rb +39 -0
- data/lib/generators/shopify_app/add_marketing_activity_extension/templates/marketing_activities_controller.rb +62 -0
- data/lib/generators/shopify_app/home_controller/home_controller_generator.rb +0 -6
- data/lib/generators/shopify_app/install/install_generator.rb +27 -11
- data/lib/generators/shopify_app/install/templates/_flash_messages.html.erb +1 -17
- data/lib/generators/shopify_app/install/templates/embedded_app.html.erb +11 -10
- data/lib/generators/shopify_app/install/templates/flash_messages.js +26 -0
- data/lib/generators/shopify_app/install/templates/shopify_app.js +15 -0
- data/lib/generators/shopify_app/install/templates/shopify_app.rb +6 -3
- data/lib/generators/shopify_app/install/templates/shopify_app_index.js +2 -0
- data/lib/generators/shopify_app/install/templates/shopify_provider.rb +1 -0
- data/lib/generators/shopify_app/install/templates/user_agent.rb +5 -0
- data/lib/generators/shopify_app/user_model/templates/db/migrate/create_users.erb +16 -0
- data/lib/generators/shopify_app/user_model/templates/user.rb +7 -0
- data/lib/generators/shopify_app/user_model/templates/users.yml +4 -0
- data/lib/generators/shopify_app/user_model/user_model_generator.rb +38 -0
- data/lib/shopify_app.rb +46 -29
- data/lib/shopify_app/configuration.rb +24 -9
- data/lib/shopify_app/controller_concerns/login_protection.rb +53 -7
- data/lib/shopify_app/engine.rb +4 -0
- data/lib/shopify_app/managers/webhooks_manager.rb +1 -1
- data/lib/shopify_app/middleware/same_site_cookie_middleware.rb +33 -0
- data/lib/shopify_app/session/in_memory_session_store.rb +1 -1
- data/lib/shopify_app/session/session_repository.rb +2 -2
- data/lib/shopify_app/session/session_storage.rb +10 -22
- data/lib/shopify_app/session/storage_strategies/shop_storage_strategy.rb +23 -0
- data/lib/shopify_app/session/storage_strategies/user_storage_strategy.rb +24 -0
- data/lib/shopify_app/utils.rb +7 -0
- data/lib/shopify_app/version.rb +1 -1
- data/package-lock.json +7212 -11
- data/package.json +9 -9
- data/service.yml +1 -1
- data/shopify_app.gemspec +10 -5
- data/translation.yml +1 -1
- data/yarn.lock +2555 -1886
- metadata +115 -19
- data/lib/generators/shopify_app/home_controller/templates/shopify_app_ready_script.html.erb +0 -7
data/docs/Releasing.md
CHANGED
@@ -3,7 +3,6 @@ Releasing ShopifyApp
|
|
3
3
|
1. Check the Semantic Versioning page for info on how to version the new release: http://semver.org
|
4
4
|
2. Create a pull request with the following changes:
|
5
5
|
* Update the version of ShopifyApp in lib/shopify_app/version.rb
|
6
|
-
* Update the version in package.json
|
7
6
|
* Add a CHANGELOG entry for the new release with the date
|
8
7
|
* Change the title of the PR to something like: "Packaging for release X.Y.Z"
|
9
8
|
3. Merge your pull request
|
Binary file
|
Binary file
|
data/karma.conf.js
CHANGED
data/lib/generators/shopify_app/add_after_authenticate_job/add_after_authenticate_job_generator.rb
CHANGED
@@ -14,7 +14,7 @@ module ShopifyApp
|
|
14
14
|
|
15
15
|
after_authenticate_job_config =
|
16
16
|
" config.after_authenticate_job = "\
|
17
|
-
"{ job: Shopify::AfterAuthenticateJob, inline: false }\n"
|
17
|
+
"{ job: \"Shopify::AfterAuthenticateJob\", inline: false }\n"
|
18
18
|
|
19
19
|
inject_into_file(
|
20
20
|
'config/initializers/shopify_app.rb',
|
@@ -23,7 +23,7 @@ module ShopifyApp
|
|
23
23
|
)
|
24
24
|
|
25
25
|
unless initializer.include?(after_authenticate_job_config)
|
26
|
-
shell.say
|
26
|
+
shell.say("Error adding after_authenticate_job to config. Add this line manually: #{after_authenticate_job_config}", :red)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module ShopifyApp
|
4
|
+
module Generators
|
5
|
+
class AddMarketingActivityExtensionGenerator < Rails::Generators::Base
|
6
|
+
source_root File.expand_path('../templates', __FILE__)
|
7
|
+
|
8
|
+
def generate_app_extension
|
9
|
+
template "marketing_activities_controller.rb", "app/controllers/marketing_activities_controller.rb"
|
10
|
+
generate_routes
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def generate_routes
|
16
|
+
inject_into_file(
|
17
|
+
'config/routes.rb',
|
18
|
+
optimize_indentation(routes, 2),
|
19
|
+
after: "root :to => 'home#index'\n"
|
20
|
+
)
|
21
|
+
end
|
22
|
+
|
23
|
+
def routes
|
24
|
+
<<~EOS
|
25
|
+
|
26
|
+
resource :marketing_activities, only: [:create, :update] do
|
27
|
+
patch :resume
|
28
|
+
patch :pause
|
29
|
+
patch :delete
|
30
|
+
post :republish
|
31
|
+
post :preload_form_data
|
32
|
+
post :preview
|
33
|
+
post :errors
|
34
|
+
end
|
35
|
+
EOS
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class MarketingActivitiesController < ShopifyApp::ExtensionVerificationController
|
4
|
+
def preload_form_data
|
5
|
+
preload_data = {
|
6
|
+
"form_data": {}
|
7
|
+
}
|
8
|
+
render(json: preload_data, status: :ok)
|
9
|
+
end
|
10
|
+
|
11
|
+
def update
|
12
|
+
render(json: {}, status: :accepted)
|
13
|
+
end
|
14
|
+
|
15
|
+
def pause
|
16
|
+
render(json: {}, status: :accepted)
|
17
|
+
end
|
18
|
+
|
19
|
+
def resume
|
20
|
+
render(json: {}, status: :accepted)
|
21
|
+
end
|
22
|
+
|
23
|
+
def delete
|
24
|
+
render(json: {}, status: :accepted)
|
25
|
+
end
|
26
|
+
|
27
|
+
def preview
|
28
|
+
placeholder_img = "https://cdn.shopify.com/s/files/1/0533/2089/files/placeholder-images-image_small.png"
|
29
|
+
preview_response = {
|
30
|
+
"desktop": {
|
31
|
+
"preview_url": placeholder_img,
|
32
|
+
"content_type": "text/html",
|
33
|
+
"width": 360,
|
34
|
+
"height": 200
|
35
|
+
},
|
36
|
+
"mobile": {
|
37
|
+
"preview_url": placeholder_img,
|
38
|
+
"content_type": "text/html",
|
39
|
+
"width": 360,
|
40
|
+
"height": 200
|
41
|
+
}
|
42
|
+
}
|
43
|
+
render(json: preview_response, status: :ok)
|
44
|
+
end
|
45
|
+
|
46
|
+
def create
|
47
|
+
render(json: {}, status: :ok)
|
48
|
+
end
|
49
|
+
|
50
|
+
def republish
|
51
|
+
render(json: {}, status: :accepted)
|
52
|
+
end
|
53
|
+
|
54
|
+
def errors
|
55
|
+
request_id = params[:request_id]
|
56
|
+
message = params[:message]
|
57
|
+
|
58
|
+
Rails.logger.info("[Marketing Activity App Error Feedback] Request id: #{request_id}, message: #{message}")
|
59
|
+
|
60
|
+
render(json: {}, status: :ok)
|
61
|
+
end
|
62
|
+
end
|
@@ -11,12 +11,6 @@ module ShopifyApp
|
|
11
11
|
|
12
12
|
def create_home_index_view
|
13
13
|
copy_file 'index.html.erb', 'app/views/home/index.html.erb'
|
14
|
-
if embedded_app?
|
15
|
-
prepend_to_file(
|
16
|
-
'app/views/home/index.html.erb',
|
17
|
-
File.read(File.expand_path(find_in_source_paths('shopify_app_ready_script.html.erb')))
|
18
|
-
)
|
19
|
-
end
|
20
14
|
end
|
21
15
|
|
22
16
|
def add_home_index_route
|
@@ -7,20 +7,14 @@ module ShopifyApp
|
|
7
7
|
source_root File.expand_path('../templates', __FILE__)
|
8
8
|
|
9
9
|
class_option :application_name, type: :array, default: ['My', 'Shopify', 'App']
|
10
|
-
class_option :api_key, type: :string, default: '<api_key>'
|
11
|
-
class_option :secret, type: :string, default: '<secret>'
|
12
|
-
class_option :old_secret, type: :string, default: '<old_secret>'
|
13
10
|
class_option :scope, type: :array, default: ['read_products']
|
14
11
|
class_option :embedded, type: :string, default: 'true'
|
15
|
-
class_option :api_version, type: :string, default:
|
12
|
+
class_option :api_version, type: :string, default: nil
|
16
13
|
|
17
14
|
def create_shopify_app_initializer
|
18
15
|
@application_name = format_array_argument(options['application_name'])
|
19
|
-
@api_key = options['api_key']
|
20
|
-
@secret = options['secret']
|
21
|
-
@old_secret = options['old_secret']
|
22
16
|
@scope = format_array_argument(options['scope'])
|
23
|
-
@api_version = options['api_version']
|
17
|
+
@api_version = options['api_version'] || ShopifyAPI::Meta.admin_versions.find(&:latest_supported).handle
|
24
18
|
|
25
19
|
template 'shopify_app.rb', 'config/initializers/shopify_app.rb'
|
26
20
|
end
|
@@ -42,16 +36,38 @@ module ShopifyApp
|
|
42
36
|
end
|
43
37
|
|
44
38
|
def create_embedded_app_layout
|
45
|
-
|
46
|
-
|
47
|
-
|
39
|
+
return unless embedded_app?
|
40
|
+
|
41
|
+
copy_file 'embedded_app.html.erb', 'app/views/layouts/embedded_app.html.erb'
|
42
|
+
copy_file '_flash_messages.html.erb', 'app/views/layouts/_flash_messages.html.erb'
|
43
|
+
|
44
|
+
if ShopifyApp.use_webpacker?
|
45
|
+
copy_file('shopify_app.js', 'app/javascript/shopify_app/shopify_app.js')
|
46
|
+
copy_file('flash_messages.js', 'app/javascript/shopify_app/flash_messages.js')
|
47
|
+
copy_file('shopify_app_index.js', 'app/javascript/shopify_app/index.js')
|
48
|
+
append_to_file('app/javascript/packs/application.js', 'require("shopify_app")')
|
49
|
+
else
|
50
|
+
copy_file('shopify_app.js', 'app/assets/javascripts/shopify_app.js')
|
51
|
+
copy_file('flash_messages.js', 'app/assets/javascripts/flash_messages.js')
|
48
52
|
end
|
49
53
|
end
|
50
54
|
|
55
|
+
def create_user_agent_initializer
|
56
|
+
template 'user_agent.rb', 'config/initializers/user_agent.rb'
|
57
|
+
end
|
58
|
+
|
51
59
|
def mount_engine
|
52
60
|
route "mount ShopifyApp::Engine, at: '/'"
|
53
61
|
end
|
54
62
|
|
63
|
+
def insert_hosts_into_development_config
|
64
|
+
inject_into_file(
|
65
|
+
'config/environments/development.rb',
|
66
|
+
" config.hosts = (config.hosts rescue []) << /\\h+.ngrok.io/\n",
|
67
|
+
after: "Rails.application.configure do\n"
|
68
|
+
)
|
69
|
+
end
|
70
|
+
|
55
71
|
private
|
56
72
|
|
57
73
|
def embedded_app?
|
@@ -1,19 +1,3 @@
|
|
1
1
|
<% content_for :javascript do %>
|
2
|
-
|
3
|
-
var eventName = typeof(Turbolinks) !== 'undefined' ? 'turbolinks:load' : 'DOMContentLoaded';
|
4
|
-
|
5
|
-
if (!document.documentElement.hasAttribute("data-turbolinks-preview")) {
|
6
|
-
document.addEventListener(eventName, function flash() {
|
7
|
-
<% if flash[:notice] %>
|
8
|
-
ShopifyApp.flashNotice(<%== flash[:notice].to_json %>);
|
9
|
-
<% end %>
|
10
|
-
|
11
|
-
<% if flash[:error] %>
|
12
|
-
ShopifyApp.flashError(<%== flash[:error].to_json %>);
|
13
|
-
<% end %>
|
14
|
-
|
15
|
-
document.removeEventListener(eventName, flash)
|
16
|
-
});
|
17
|
-
}
|
18
|
-
</script>
|
2
|
+
<%= content_tag(:div, nil, id: 'shopify-app-flash', data: { flash: { notice: flash[:notice], error: flash[:error] } }) %>
|
19
3
|
<% end %>
|
@@ -5,7 +5,11 @@
|
|
5
5
|
<% application_name = ShopifyApp.configuration.application_name %>
|
6
6
|
<title><%= application_name %></title>
|
7
7
|
<%= stylesheet_link_tag 'application' %>
|
8
|
-
|
8
|
+
<% if ShopifyApp.use_webpacker? %>
|
9
|
+
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
|
10
|
+
<% else %>
|
11
|
+
<%= javascript_include_tag 'application', "data-turbolinks-track" => true %>
|
12
|
+
<% end %>
|
9
13
|
<%= csrf_meta_tags %>
|
10
14
|
</head>
|
11
15
|
|
@@ -20,16 +24,13 @@
|
|
20
24
|
|
21
25
|
<%= render 'layouts/flash_messages' %>
|
22
26
|
|
23
|
-
<script src="https://
|
27
|
+
<script src="https://unpkg.com/@shopify/app-bridge"></script>
|
24
28
|
|
25
|
-
|
26
|
-
ShopifyApp.
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
forceRedirect: true
|
31
|
-
});
|
32
|
-
</script>
|
29
|
+
<%= content_tag(:div, nil, id: 'shopify-app-init', data: {
|
30
|
+
api_key: ShopifyApp.configuration.api_key,
|
31
|
+
shop_origin: (@shop_session.domain if @shop_session),
|
32
|
+
debug: Rails.env.development?
|
33
|
+
} ) %>
|
33
34
|
|
34
35
|
<% if content_for?(:javascript) %>
|
35
36
|
<div id="ContentForJavascript" data-turbolinks-temporary>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
var eventName = typeof(Turbolinks) !== 'undefined' ? 'turbolinks:load' : 'DOMContentLoaded';
|
2
|
+
|
3
|
+
if (!document.documentElement.hasAttribute("data-turbolinks-preview")) {
|
4
|
+
document.addEventListener(eventName, function flash() {
|
5
|
+
var flashData = JSON.parse(document.getElementById('shopify-app-flash').dataset.flash);
|
6
|
+
|
7
|
+
var Toast = window['app-bridge'].actions.Toast;
|
8
|
+
|
9
|
+
if (flashData.notice) {
|
10
|
+
Toast.create(app, {
|
11
|
+
message: flashData.notice,
|
12
|
+
duration: 5000,
|
13
|
+
}).dispatch(Toast.Action.SHOW);
|
14
|
+
}
|
15
|
+
|
16
|
+
if (flashData.error) {
|
17
|
+
Toast.create(app, {
|
18
|
+
message: flashData.error,
|
19
|
+
duration: 5000,
|
20
|
+
isError: true,
|
21
|
+
}).dispatch(Toast.Action.SHOW);
|
22
|
+
}
|
23
|
+
|
24
|
+
document.removeEventListener(eventName, flash)
|
25
|
+
});
|
26
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
document.addEventListener('DOMContentLoaded', () => {
|
2
|
+
var data = document.getElementById('shopify-app-init').dataset;
|
3
|
+
var AppBridge = window['app-bridge'];
|
4
|
+
var createApp = AppBridge.default;
|
5
|
+
window.app = createApp({
|
6
|
+
apiKey: data.apiKey,
|
7
|
+
shopOrigin: data.shopOrigin,
|
8
|
+
});
|
9
|
+
|
10
|
+
var actions = AppBridge.actions;
|
11
|
+
var TitleBar = actions.TitleBar;
|
12
|
+
TitleBar.create(app, {
|
13
|
+
title: data.page,
|
14
|
+
});
|
15
|
+
});
|
@@ -1,12 +1,15 @@
|
|
1
1
|
ShopifyApp.configure do |config|
|
2
2
|
config.application_name = "<%= @application_name %>"
|
3
|
-
config.api_key =
|
4
|
-
config.secret =
|
3
|
+
config.api_key = ENV['SHOPIFY_API_KEY']
|
4
|
+
config.secret = ENV['SHOPIFY_API_SECRET']
|
5
5
|
config.old_secret = "<%= @old_secret %>"
|
6
6
|
config.scope = "<%= @scope %>" # Consult this page for more scope options:
|
7
7
|
# https://help.shopify.com/en/api/getting-started/authentication/oauth/scopes
|
8
8
|
config.embedded_app = <%= embedded_app? %>
|
9
9
|
config.after_authenticate_job = false
|
10
10
|
config.api_version = "<%= @api_version %>"
|
11
|
-
config.session_repository = ShopifyApp::InMemorySessionStore
|
11
|
+
config.session_repository = 'ShopifyApp::InMemorySessionStore'
|
12
12
|
end
|
13
|
+
|
14
|
+
# ShopifyApp::Utils.fetch_known_api_versions # Uncomment to fetch known api versions from shopify servers on boot
|
15
|
+
# ShopifyAPI::ApiVersion.version_lookup_mode = :raise_on_unknown # Uncomment to raise an error if attempting to use an api version that was not previously known
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class CreateUsers < ActiveRecord::Migration[<%= rails_migration_version %>]
|
2
|
+
def self.up
|
3
|
+
create_table :users do |t|
|
4
|
+
t.bigint :shopify_user_id, null: false
|
5
|
+
t.string :shopify_domain, null: false
|
6
|
+
t.string :shopify_token, null: false
|
7
|
+
t.timestamps
|
8
|
+
end
|
9
|
+
|
10
|
+
add_index :users, :shopify_user_id, unique: true
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.down
|
14
|
+
drop_table :users
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
require 'rails/generators/active_record'
|
3
|
+
|
4
|
+
module ShopifyApp
|
5
|
+
module Generators
|
6
|
+
class UserModelGenerator < Rails::Generators::Base
|
7
|
+
include Rails::Generators::Migration
|
8
|
+
source_root File.expand_path('../templates', __FILE__)
|
9
|
+
|
10
|
+
def create_user_model
|
11
|
+
copy_file 'user.rb', 'app/models/user.rb'
|
12
|
+
end
|
13
|
+
|
14
|
+
def create_user_migration
|
15
|
+
migration_template 'db/migrate/create_users.erb', 'db/migrate/create_users.rb'
|
16
|
+
end
|
17
|
+
|
18
|
+
def update_shopify_app_initializer
|
19
|
+
gsub_file 'config/initializers/shopify_app.rb', 'ShopifyApp::InMemorySessionStore', 'User'
|
20
|
+
end
|
21
|
+
|
22
|
+
def create_user_fixtures
|
23
|
+
copy_file 'users.yml', 'test/fixtures/users.yml'
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def rails_migration_version
|
29
|
+
Rails.version.match(/\d\.\d/)[0]
|
30
|
+
end
|
31
|
+
|
32
|
+
# for generating a timestamp when using `create_migration`
|
33
|
+
def self.next_migration_number(dir)
|
34
|
+
ActiveRecord::Generators::Base.next_migration_number(dir)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/shopify_app.rb
CHANGED
@@ -4,32 +4,49 @@ require 'shopify_app/version'
|
|
4
4
|
require 'shopify_api'
|
5
5
|
require 'omniauth-shopify-oauth2'
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
require 'shopify_app/
|
20
|
-
|
21
|
-
|
22
|
-
require 'shopify_app/
|
23
|
-
|
24
|
-
#
|
25
|
-
require 'shopify_app/
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
require 'shopify_app/
|
30
|
-
require 'shopify_app/
|
31
|
-
|
32
|
-
|
33
|
-
require 'shopify_app/
|
34
|
-
|
35
|
-
|
7
|
+
module ShopifyApp
|
8
|
+
def self.rails6?
|
9
|
+
Rails::VERSION::MAJOR >= 6
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.use_webpacker?
|
13
|
+
rails6? &&
|
14
|
+
defined?(Webpacker) == 'constant' &&
|
15
|
+
!configuration.disable_webpacker
|
16
|
+
end
|
17
|
+
|
18
|
+
# config
|
19
|
+
require 'shopify_app/configuration'
|
20
|
+
|
21
|
+
# engine
|
22
|
+
require 'shopify_app/engine'
|
23
|
+
|
24
|
+
# utils
|
25
|
+
require 'shopify_app/utils'
|
26
|
+
|
27
|
+
# controller concerns
|
28
|
+
require 'shopify_app/controller_concerns/localization'
|
29
|
+
require 'shopify_app/controller_concerns/itp'
|
30
|
+
require 'shopify_app/controller_concerns/login_protection'
|
31
|
+
require 'shopify_app/controller_concerns/embedded_app'
|
32
|
+
require 'shopify_app/controller_concerns/webhook_verification'
|
33
|
+
require 'shopify_app/controller_concerns/app_proxy_verification'
|
34
|
+
|
35
|
+
# jobs
|
36
|
+
require 'shopify_app/jobs/webhooks_manager_job'
|
37
|
+
require 'shopify_app/jobs/scripttags_manager_job'
|
38
|
+
|
39
|
+
# managers
|
40
|
+
require 'shopify_app/managers/webhooks_manager'
|
41
|
+
require 'shopify_app/managers/scripttags_manager'
|
42
|
+
|
43
|
+
# middleware
|
44
|
+
require 'shopify_app/middleware/same_site_cookie_middleware'
|
45
|
+
|
46
|
+
# session
|
47
|
+
require 'shopify_app/session/storage_strategies/shop_storage_strategy'
|
48
|
+
require 'shopify_app/session/storage_strategies/user_storage_strategy'
|
49
|
+
require 'shopify_app/session/session_storage'
|
50
|
+
require 'shopify_app/session/session_repository'
|
51
|
+
require 'shopify_app/session/in_memory_session_store'
|
52
|
+
end
|