shopify_app 7.4.0 → 8.5.0

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.
Files changed (95) hide show
  1. checksums.yaml +5 -5
  2. data/.babelrc +5 -0
  3. data/.github/CODEOWNERS +1 -0
  4. data/.github/probots.yml +2 -0
  5. data/.gitignore +5 -0
  6. data/.nvmrc +1 -0
  7. data/.rubocop.yml +10 -0
  8. data/.ruby-version +1 -0
  9. data/.travis.yml +26 -3
  10. data/CHANGELOG.md +95 -0
  11. data/Gemfile +2 -0
  12. data/README.md +113 -56
  13. data/app/assets/images/storage_access.svg +2 -0
  14. data/app/assets/javascripts/shopify_app/enable_cookies.js +3 -0
  15. data/app/assets/javascripts/shopify_app/itp_helper.js +40 -0
  16. data/app/assets/javascripts/shopify_app/partition_cookies.js +7 -0
  17. data/app/assets/javascripts/shopify_app/redirect.js +33 -0
  18. data/app/assets/javascripts/shopify_app/request_storage_access.js +3 -0
  19. data/app/assets/javascripts/shopify_app/storage_access.js +121 -0
  20. data/app/assets/javascripts/shopify_app/storage_access_redirect.js +17 -0
  21. data/app/assets/javascripts/shopify_app/top_level.js +2 -0
  22. data/app/assets/javascripts/shopify_app/top_level_interaction.js +11 -0
  23. data/app/controllers/shopify_app/authenticated_controller.rb +3 -4
  24. data/{lib/shopify_app/sessions_concern.rb → app/controllers/shopify_app/callback_controller.rb} +27 -38
  25. data/app/controllers/shopify_app/sessions_controller.rb +120 -2
  26. data/app/controllers/shopify_app/webhooks_controller.rb +11 -3
  27. data/app/views/shopify_app/partials/_button_styles.html.erb +104 -0
  28. data/app/views/shopify_app/partials/_card_styles.html.erb +33 -0
  29. data/app/views/shopify_app/partials/_empty_state_styles.html.erb +129 -0
  30. data/app/views/shopify_app/partials/_layout_styles.html.erb +167 -0
  31. data/app/views/shopify_app/partials/_typography_styles.html.erb +35 -0
  32. data/app/views/shopify_app/sessions/enable_cookies.html.erb +59 -0
  33. data/app/views/shopify_app/sessions/new.html.erb +88 -60
  34. data/app/views/shopify_app/sessions/request_storage_access.html.erb +67 -0
  35. data/app/views/shopify_app/sessions/top_level_interaction.html.erb +63 -0
  36. data/app/views/shopify_app/shared/redirect.html.erb +22 -0
  37. data/config/locales/de.yml +21 -2
  38. data/config/locales/en.yml +12 -0
  39. data/config/locales/es.yml +21 -2
  40. data/config/locales/fr.yml +22 -2
  41. data/config/locales/it.yml +22 -0
  42. data/config/locales/ja.yml +16 -2
  43. data/config/locales/nl.yml +21 -0
  44. data/config/locales/pt-BR.yml +22 -0
  45. data/config/locales/zh-CN.yml +16 -0
  46. data/config/locales/zh-TW.yml +17 -0
  47. data/config/routes.rb +11 -1
  48. data/docs/Quickstart.md +26 -23
  49. data/docs/Releasing.md +1 -0
  50. data/karma.conf.js +43 -0
  51. data/lib/generators/shopify_app/add_after_authenticate_job/add_after_authenticate_job_generator.rb +3 -1
  52. data/lib/generators/shopify_app/home_controller/templates/home_controller.rb +1 -0
  53. data/lib/generators/shopify_app/home_controller/templates/index.html.erb +14 -0
  54. data/lib/generators/shopify_app/home_controller/templates/shopify_app_ready_script.html.erb +1 -5
  55. data/lib/generators/shopify_app/install/install_generator.rb +3 -13
  56. data/lib/generators/shopify_app/install/templates/_flash_messages.html.erb +13 -9
  57. data/lib/generators/shopify_app/install/templates/shopify_app.rb +4 -1
  58. data/lib/generators/shopify_app/install/templates/shopify_provider.rb +19 -4
  59. data/lib/generators/shopify_app/rotate_shopify_token_job/rotate_shopify_token_job_generator.rb +16 -0
  60. data/lib/generators/shopify_app/rotate_shopify_token_job/templates/rotate_shopify_token.rake +17 -0
  61. data/lib/generators/shopify_app/rotate_shopify_token_job/templates/rotate_shopify_token_job.rb +42 -0
  62. data/lib/generators/shopify_app/shop_model/shop_model_generator.rb +3 -3
  63. data/lib/generators/shopify_app/shop_model/templates/shop.rb +0 -1
  64. data/lib/shopify_app.rb +21 -17
  65. data/lib/shopify_app/configuration.rb +26 -8
  66. data/lib/shopify_app/{app_proxy_verification.rb → controller_concerns/app_proxy_verification.rb} +1 -1
  67. data/lib/shopify_app/controller_concerns/embedded_app.rb +19 -0
  68. data/lib/shopify_app/controller_concerns/itp.rb +45 -0
  69. data/lib/shopify_app/{localization.rb → controller_concerns/localization.rb} +6 -0
  70. data/lib/shopify_app/controller_concerns/login_protection.rb +135 -0
  71. data/lib/shopify_app/{webhook_verification.rb → controller_concerns/webhook_verification.rb} +10 -6
  72. data/lib/shopify_app/engine.rb +10 -0
  73. data/lib/shopify_app/{scripttags_manager_job.rb → jobs/scripttags_manager_job.rb} +0 -0
  74. data/lib/shopify_app/{webhooks_manager_job.rb → jobs/webhooks_manager_job.rb} +0 -0
  75. data/lib/shopify_app/{scripttags_manager.rb → managers/scripttags_manager.rb} +0 -0
  76. data/lib/shopify_app/{webhooks_manager.rb → managers/webhooks_manager.rb} +0 -0
  77. data/lib/shopify_app/session/in_memory_session_store.rb +27 -0
  78. data/lib/shopify_app/{shopify_session_repository.rb → session/session_repository.rb} +0 -0
  79. data/lib/shopify_app/{session_storage.rb → session/session_storage.rb} +9 -0
  80. data/lib/shopify_app/utils.rb +2 -2
  81. data/lib/shopify_app/version.rb +1 -1
  82. data/package-lock.json +23 -0
  83. data/package.json +28 -0
  84. data/service.yml +7 -0
  85. data/shipit.rubygems.yml +2 -0
  86. data/shopify_app.gemspec +5 -4
  87. data/translation.yml +7 -0
  88. data/webpack.config.js +24 -0
  89. data/yarn.lock +4594 -0
  90. metadata +80 -27
  91. data/lib/generators/shopify_app/install/templates/shopify_session_repository.rb +0 -23
  92. data/lib/generators/shopify_app/shop_model/templates/shopify_session_repository.rb +0 -9
  93. data/lib/shopify_app/in_memory_session_store.rb +0 -25
  94. data/lib/shopify_app/login_protection.rb +0 -119
  95. data/lib/shopify_app/shop.rb +0 -15
@@ -1,3 +1,15 @@
1
1
  en:
2
2
  logged_out: 'Successfully logged out'
3
3
  could_not_log_in: 'Could not log in to Shopify store'
4
+ invalid_shop_url: 'Invalid shop domain'
5
+ enable_cookies_heading: "Enable cookies from %{app}"
6
+ enable_cookies_body: "You must manually enable cookies in this browser in order to use %{app} within Shopify."
7
+ enable_cookies_footer: 'Cookies let the app authenticate you by temporarily storing your preferences and personal information. They expire after 30 days.'
8
+ enable_cookies_action: 'Enable cookies'
9
+ top_level_interaction_heading: "Your browser needs to authenticate %{app}"
10
+ top_level_interaction_body: "Your browser requires third-party apps like %{app} to ask you for access to cookies before Shopify can open it for you."
11
+ top_level_interaction_action: 'Continue'
12
+ request_storage_access_heading: "%{app} needs access to cookies"
13
+ request_storage_access_body: "This lets the app authenticate you by temporarily storing your personal information. Click continue and allow cookies to use the app."
14
+ request_storage_access_footer: 'Cookies expire after 30 days.'
15
+ request_storage_access_action: 'Continue'
@@ -1,3 +1,22 @@
1
+ ---
1
2
  es:
2
- logged_out: 'Cerrar sesión'
3
- could_not_log_in: 'No se pudo iniciar sesión en tu tienda de Shopify'
3
+ logged_out: Cerrar sesión
4
+ could_not_log_in: No se pudo iniciar sesión en tu tienda de Shopify
5
+ invalid_shop_url: Dominio de tienda inválido
6
+ enable_cookies_heading: Habilitar cookies de %{app}
7
+ enable_cookies_body: Debes habilitar manualmente las cookies en este navegador para
8
+ usar %{app} en Shopify.
9
+ enable_cookies_footer: Las cookies permiten que la aplicación te autentique almacenando
10
+ temporalmente tus preferencias y datos personales. Las cookies expiran al cabo
11
+ de 30 días.
12
+ enable_cookies_action: Habilitar cookies
13
+ top_level_interaction_heading: Tu navegador necesita autenticar %{app}
14
+ top_level_interaction_body: Tu navegador requiere aplicaciones externas como %{app}
15
+ para solicitarte acceso a cookies antes de que Shopify pueda abrirlo por ti.
16
+ top_level_interaction_action: Continuar
17
+ request_storage_access_heading: "%{app} necesita acceso a las cookies"
18
+ request_storage_access_body: Esto permite que la aplicación te autentique almacenando
19
+ temporalmente tus datos personales. Haz clic en continuar y permite que las cookies
20
+ utilicen la aplicación.
21
+ request_storage_access_footer: Las cookies expiran a los 30 días.
22
+ request_storage_access_action: Continuar
@@ -1,3 +1,23 @@
1
+ ---
1
2
  fr:
2
- logged_out: 'Vous êtes déconnecté(e)'
3
- could_not_log_in: 'Impossible de se connecter à la boutique Shopify'
3
+ logged_out: Vous êtes déconnecté(e)
4
+ could_not_log_in: Impossible de se connecter à la boutique Shopify
5
+ invalid_shop_url: Url invalide
6
+ enable_cookies_heading: Activer les cookies de %{app}
7
+ enable_cookies_body: Vous devez manuellement activer les cookies dans ce navigateur
8
+ pour utiliser %{app} dans Shopify.
9
+ enable_cookies_footer: Les cookies permettent à l'application de vous authentifier
10
+ en stockant temporairement vos préférences et informations personnelles. Celles-ci
11
+ expirent après 30 jours.
12
+ enable_cookies_action: Activer les cookies
13
+ top_level_interaction_heading: Votre navigateur doit s'authentifier %{app}
14
+ top_level_interaction_body: Votre navigateur nécessite des applications tierces
15
+ telles que %{app} pour vous demander l'accès aux cookies avant que Shopify ne
16
+ puisse l'ouvrir pour vous.
17
+ top_level_interaction_action: Continuer
18
+ request_storage_access_heading: "%{app} a besoin d'accéder aux cookies"
19
+ request_storage_access_body: Cela permet à l'application de vous authentifier en
20
+ stockant temporairement vos informations personnelles. Cliquez pour continuer
21
+ et autorisez les cookies à utiliser l'application.
22
+ request_storage_access_footer: Les cookies expirent après 30 jours.
23
+ request_storage_access_action: Continuer
@@ -0,0 +1,22 @@
1
+ ---
2
+ it:
3
+ logged_out: Disconnessione effettuata correttamente
4
+ could_not_log_in: Impossibile accedere al negozio Shopify
5
+ invalid_shop_url: Dominio negozio non valido
6
+ enable_cookies_heading: Abilita i cookie di %{app}
7
+ enable_cookies_body: Devi abilitare manualmente i cookie in questo browser per poter
8
+ utilizzare %{app} da Shopify.
9
+ enable_cookies_footer: I cookie consentono all'app di autenticarti memorizzando
10
+ temporaneamente le tue preferenze e informazioni personali. Scadono dopo 30 giorni.
11
+ enable_cookies_action: Abilita i cookie
12
+ top_level_interaction_heading: Il tuo browser deve autenticare %{app}
13
+ top_level_interaction_body: Il tuo browser richiede che app di terze parti come
14
+ %{app} ti chiedano l'accesso ai cookie prima dell'apertura automatica da parte
15
+ di Shopify.
16
+ top_level_interaction_action: Continua
17
+ request_storage_access_heading: "%{app} deve accedere ai cookie"
18
+ request_storage_access_body: L'app potrà così autenticarti memorizzando temporaneamente
19
+ le tue informazioni personali. Clicca su Continua e consenti ai cookie di utilizzare
20
+ l'app.
21
+ request_storage_access_footer: I cookie scadono dopo 30 giorni.
22
+ request_storage_access_action: Continua
@@ -1,3 +1,17 @@
1
+ ---
1
2
  ja:
2
- logged_out: 'ログインに成功しました'
3
- could_not_log_in: 'Shopifyストアにログインできませんでした'
3
+ logged_out: ログインに成功しました
4
+ could_not_log_in: Shopifyストアにログインできませんでした
5
+ invalid_shop_url: ショップのドメインが無効です
6
+ enable_cookies_heading: "%{app}からのCookieを有効にする"
7
+ enable_cookies_body: Shopifyで%{app}を使用できるようにするためには、このブラウザのCookieを手動で有効にする必要があります。
8
+ enable_cookies_footer: Cookieを使用すると、各種設定や個人情報を一時的に保存することで、アプリ認証を受けることができます。30日後に有効期限が切れます。
9
+ enable_cookies_action: Cookieを有効にする
10
+ top_level_interaction_heading: お使いのブラウザを更新する必要があります%{app}
11
+ top_level_interaction_body: Shopifyがアプリを開けるように、ブラウザーはCookie にアクセスするための%{app}のような外部アプリが必要です。
12
+ top_level_interaction_action: 続ける
13
+ request_storage_access_heading: "%{app}クッキーにアクセスする必要がある"
14
+ request_storage_access_body: Cookieを使用すると、個人情報を一時的に保存することで、アプリ認証を受けることができます。[続行]
15
+ をクリックして、Cookieでアプリを使用できるようにします。
16
+ request_storage_access_footer: Cookieは30日後に有効期限が切れます。
17
+ request_storage_access_action: 続ける
@@ -0,0 +1,21 @@
1
+ ---
2
+ nl:
3
+ logged_out: U bent afgemeld
4
+ could_not_log_in: Kon niet aanmelden bij Shopify-winkel
5
+ invalid_shop_url: Ongeldig winkeldomein
6
+ enable_cookies_heading: Schakel cookies in van %{app}
7
+ enable_cookies_body: U moet cookies in deze browser handmatig inschakelen om %{app}
8
+ binnen Shopify te gebruiken.
9
+ enable_cookies_footer: Met cookies kan de app u verifiëren door uw voorkeuren en
10
+ persoonlijke informatie tijdelijk op te slaan. Ze vervallen na 30 dagen.
11
+ enable_cookies_action: Schakel cookies in
12
+ top_level_interaction_heading: Uw browser moet %{app} verifiëren
13
+ top_level_interaction_body: Uw browser heeft apps van derden nodig zoals %{app}
14
+ om u toegang te vragen tot cookies voordat Shopify het voor u kan openen.
15
+ top_level_interaction_action: Doorgaan
16
+ request_storage_access_heading: "%{app} heeft toegang tot cookies nodig"
17
+ request_storage_access_body: Hiermee kan de app u verifiëren door uw persoonlijke
18
+ gegevens tijdelijk op te slaan. Klik op Doorgaan en sta cookies toe om de app
19
+ te gebruiken.
20
+ request_storage_access_footer: Cookies verlopen na 30 dagen.
21
+ request_storage_access_action: Doorgaan
@@ -0,0 +1,22 @@
1
+ ---
2
+ pt-BR:
3
+ logged_out: Você saiu com sucesso
4
+ could_not_log_in: Não foi possível fazer login na Shopify store
5
+ invalid_shop_url: Domínio de loja inválido
6
+ enable_cookies_heading: Ativar cookies de %{app}
7
+ enable_cookies_body: Você deve ativar manualmente os cookies neste navegador para
8
+ usar %{app} dentro da Shopify.
9
+ enable_cookies_footer: Os cookies permitem que o aplicativo o autentique armazenando
10
+ temporariamente suas preferências e informações pessoais. Eles expiram depois
11
+ de 30 dias.
12
+ enable_cookies_action: Ativar cookies
13
+ top_level_interaction_heading: Seu navegador precisa autenticar %{app}
14
+ top_level_interaction_body: Seu navegador exige que apps de terceiros como o %{app}
15
+ consultem você sobre o acesso a cookies antes da Shopify abri-los.
16
+ top_level_interaction_action: Continuar
17
+ request_storage_access_heading: "%{app} precisa acessar cookies"
18
+ request_storage_access_body: Isso permite que o app autentique você armazenando
19
+ temporariamente seus dados pessoais. Clique em continuar e permita os cookies
20
+ para usar o app.
21
+ request_storage_access_footer: Os cookies expiram depois de 30 dias.
22
+ request_storage_access_action: Continuar
@@ -0,0 +1,16 @@
1
+ ---
2
+ zh-CN:
3
+ logged_out: 已成功注销
4
+ could_not_log_in: 无法登录到 Shopify 店铺
5
+ invalid_shop_url: 商店域无效
6
+ enable_cookies_heading: 从 %{app} 启用 Cookie
7
+ enable_cookies_body: 您必须在此浏览器中手动启用 Cookie 才能在 Shopify 中使用 %{app}。
8
+ enable_cookies_footer: Cookie 使此应用能够通过暂时存储您的首选项和个人信息来验证您的身份。这些信息将在 30 天后过期。
9
+ enable_cookies_action: 启用 Cookie
10
+ top_level_interaction_heading: 您的浏览器需要对 %{app} 进行验证
11
+ top_level_interaction_body: 您的浏览器要求类似 %{app} 的第三方应用向您请求访问 Cookie,之后 Shopify 才能为您打开它。
12
+ top_level_interaction_action: 继续
13
+ request_storage_access_heading: "%{app} 需要访问 Cookie"
14
+ request_storage_access_body: 这使此应用能够通过暂时存储您的个人信息来验证您的身份。单击继续并启用 Cookie 以使用此应用。
15
+ request_storage_access_footer: Cookie 将在 30 天后过期。
16
+ request_storage_access_action: 继续
@@ -0,0 +1,17 @@
1
+ ---
2
+ zh-TW:
3
+ logged_out: 登出成功
4
+ could_not_log_in: 無法登入 Shopify 商店
5
+ invalid_shop_url: 商店網域無效
6
+ enable_cookies_heading: 啟用 %{app} 的 Cookie
7
+ enable_cookies_body: 您必須在此瀏覽器中手動啟用 Cookie,才能夠在 Shopify 使用 %{app}。
8
+ enable_cookies_footer: Cookie 可讓應用程式暫時儲存您的偏好設定和個人資訊,藉此驗證您的身分,這些資料會在 30 天後失效。
9
+ enable_cookies_action: 啟用 Cookie
10
+ top_level_interaction_heading: 您的瀏覽器需要驗證 %{app}
11
+ top_level_interaction_body: 您的瀏覽器會要求第三方應用程式 (例如:%{app}) 向您請求 Cookie 的存取權限,然後才讓 Shopify
12
+ 為您開啟此應用程式。
13
+ top_level_interaction_action: 繼續
14
+ request_storage_access_heading: "%{app} 需要 Cookie 存取權限"
15
+ request_storage_access_body: Cookie 可讓應用程式暫時儲存您的個人資訊,藉此驗證您的身分。按一下繼續並允許 Cookie 使用此應用程式。
16
+ request_storage_access_footer: Cookie 將於 30 天後失效。
17
+ request_storage_access_action: 繼續
@@ -2,10 +2,20 @@ ShopifyApp::Engine.routes.draw do
2
2
  controller :sessions do
3
3
  get 'login' => :new, :as => :login
4
4
  post 'login' => :create, :as => :authenticate
5
- get 'auth/shopify/callback' => :callback
5
+ get 'enable_cookies' => :enable_cookies, :as => :enable_cookies
6
+ get 'top_level_interaction' =>
7
+ :top_level_interaction,
8
+ :as => :top_level_interaction
9
+ get 'granted_storage_access' =>
10
+ :granted_storage_access,
11
+ :as => :granted_storage_access
6
12
  get 'logout' => :destroy, :as => :logout
7
13
  end
8
14
 
15
+ controller :callback do
16
+ get 'auth/shopify/callback' => :callback
17
+ end
18
+
9
19
  namespace :webhooks do
10
20
  post ':type' => :receive
11
21
  end
@@ -6,12 +6,12 @@ Build and deploy a new Shopify App to Heroku in minutes
6
6
  1. New Rails App (with postgres)
7
7
  --------------------------------
8
8
 
9
- ```
10
- rails new test-app --database=postgresql
11
- cd test-app
12
- git init
13
- git add .
14
- git commit -m 'new rails app'
9
+ ```sh
10
+ $ rails new test-app --database=postgresql
11
+ $ cd test-app
12
+ $ git init
13
+ $ git add .
14
+ $ git commit -m 'new rails app'
15
15
  ```
16
16
 
17
17
  2. Create a new Heroku app
@@ -20,17 +20,17 @@ git commit -m 'new rails app'
20
20
  The next step is to create a new heroku app. Pull up your heroku dashboard and make a new app!
21
21
 
22
22
  cli:
23
+ ```sh
24
+ $ heroku create name
25
+ $ heroku git:remote -a name
23
26
  ```
24
- heroku create name
25
- heroku git:remote -a name
26
- ```
27
27
 
28
28
  now we need to let git know where the remote server is so we'll be able to deploy later
29
29
 
30
30
  web:
31
- ```
32
- https://dashboard.heroku.com/new
33
- git remote add heroku git@heroku.com:appinfive.git
31
+ ```sh
32
+ # https://dashboard.heroku.com/new
33
+ $ git remote add heroku git@heroku.com:appinfive.git
34
34
  ```
35
35
 
36
36
  3. Create a new App in the partners area
@@ -43,28 +43,31 @@ git remote add heroku git@heroku.com:appinfive.git
43
43
 
44
44
  4. Add ShopifyApp to gemfile
45
45
  ----------------------------
46
- ```
46
+ ```sh
47
47
  $ echo "gem 'shopify_app'" >> Gemfile
48
-
49
- bundle install
48
+ $ bundle install
50
49
  ```
51
50
 
52
51
  Note - its recommended to use the latest released version. Check the git tags to see the latest release and then add it to your Gemfile e.g `gem 'shopify_app', '~> 7.0.0'`
53
52
 
54
53
  5. Run the ShopifyApp generator
55
54
  -------------------------------
55
+ ```sh
56
+ # use the keys from your app in the partners area
57
+ $ rails generate shopify_app --api_key <shopify_api_key> --secret <shopify_api_secret>
58
+ $ git add .
59
+ $ git commit -m 'generated shopify app'
56
60
  ```
57
- use the keys from your app in the partners area
58
- rails generate shopify_app --api_key a366cbafaccebd2f615aebdfc932fa1c --secret 8750306a895b3dbc7f4136c2ae2ea293
59
- git add .
60
- git commit -m 'generated shopify app'
61
- ```
61
+
62
+ If you forget to set your keys or redirect uri above, you will find them in the shopify_app initializer at: `/config/initializers/shopify_app.rb`.
63
+
64
+ We recommend adding a gem or utilizing ENV variables to handle your keys before releasing your app.
62
65
 
63
66
  6. Deploy
64
67
  ---------
65
- ```
66
- git push heroku
67
- heroku run rake db:migrate
68
+ ```sh
69
+ $ git push heroku
70
+ $ heroku run rake db:migrate
68
71
  ```
69
72
 
70
73
  7. Install the App!
@@ -3,6 +3,7 @@ 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
6
7
  * Add a CHANGELOG entry for the new release with the date
7
8
  * Change the title of the PR to something like: "Packaging for release X.Y.Z"
8
9
  3. Merge your pull request
@@ -0,0 +1,43 @@
1
+ const karmaReporters = ['mocha-clean'];
2
+
3
+ function isDebug(argument) {
4
+ return argument === '--debug';
5
+ }
6
+
7
+ module.exports = function(config) {
8
+ config.set({
9
+ mode: 'development',
10
+ basePath: '',
11
+ frameworks: ['mocha-debug', 'mocha', 'chai-sinon'],
12
+ files: [
13
+ 'app/assets/javascripts/**/*.js',
14
+ 'test/javascripts/**/*test.js',
15
+ ],
16
+ exclude: [
17
+ // Exclude JS files that create 'DOMContentLoaded' event listeners
18
+ 'app/assets/javascripts/**/redirect.js',
19
+ 'app/assets/javascripts/**/storage_access_redirect.js',
20
+ 'app/assets/javascripts/**/top_level_interaction.js',
21
+ 'app/assets/javascripts/**/partition_cookies.js',
22
+ ],
23
+ mochaReporter: {
24
+ output: 'autowatch',
25
+ },
26
+ preprocessors: {
27
+ 'test/javascripts/**/*test.js': ['webpack'],
28
+ },
29
+ reporters: karmaReporters,
30
+ port: 9876,
31
+ colors: true,
32
+ logLevel: config.LOG_WARN,
33
+ autoWatch: false,
34
+ browsers: ['ChromeHeadless'],
35
+ singleRun: true,
36
+ client: {
37
+ mocha: {
38
+ ui: 'tdd',
39
+ grep: config.grep,
40
+ },
41
+ },
42
+ });
43
+ };
@@ -12,7 +12,9 @@ module ShopifyApp
12
12
  def init_after_authenticate_config
13
13
  initializer = load_initializer
14
14
 
15
- after_authenticate_job_config = " config.after_authenticate_job = { job: Shopify::AfterAuthenticateJob, inline: false }\n"
15
+ after_authenticate_job_config =
16
+ " config.after_authenticate_job = "\
17
+ "{ job: Shopify::AfterAuthenticateJob, inline: false }\n"
16
18
 
17
19
  inject_into_file(
18
20
  'config/initializers/shopify_app.rb',
@@ -1,5 +1,6 @@
1
1
  class HomeController < ShopifyApp::AuthenticatedController
2
2
  def index
3
3
  @products = ShopifyAPI::Product.find(:all, params: { limit: 10 })
4
+ @webhooks = ShopifyAPI::Webhook.find(:all)
4
5
  end
5
6
  end
@@ -5,3 +5,17 @@
5
5
  <li><%= link_to product.title, "https://#{@shop_session.url}/admin/products/#{product.id}", target: "_top" %></li>
6
6
  <% end %>
7
7
  </ul>
8
+
9
+ <hr>
10
+
11
+ <h2>Webhooks</h2>
12
+
13
+ <% if @webhooks.present? %>
14
+ <ul>
15
+ <% @webhooks.each do |webhook| %>
16
+ <li><%= webhook.topic %> : <%= webhook.address %></li>
17
+ <% end %>
18
+ </ul>
19
+ <% else %>
20
+ <p>This app has not created any webhooks for this Shop. Add webhooks to your ShopifyApp initializer if you need webhooks</p>
21
+ <% end %>
@@ -1,11 +1,7 @@
1
1
  <% content_for :javascript do %>
2
2
  <script type="text/javascript">
3
3
  ShopifyApp.ready(function(){
4
- ShopifyApp.Bar.initialize({
5
- title: "Home",
6
- icon: "<%= asset_path('favicon.ico') %>"
7
- });
4
+ ShopifyApp.Bar.initialize({ title: "Home" });
8
5
  });
9
6
  </script>
10
7
  <% end %>
11
-
@@ -1,5 +1,4 @@
1
1
  require 'rails/generators/base'
2
- require 'rails/generators/active_record'
3
2
 
4
3
  module ShopifyApp
5
4
  module Generators
@@ -10,13 +9,15 @@ module ShopifyApp
10
9
  class_option :application_name, type: :array, default: ['My', 'Shopify', 'App']
11
10
  class_option :api_key, type: :string, default: '<api_key>'
12
11
  class_option :secret, type: :string, default: '<secret>'
13
- class_option :scope, type: :array, default: ['read_orders,', 'read_products']
12
+ class_option :old_secret, type: :string, default: '<old_secret>'
13
+ class_option :scope, type: :array, default: ['read_products']
14
14
  class_option :embedded, type: :string, default: 'true'
15
15
 
16
16
  def create_shopify_app_initializer
17
17
  @application_name = format_array_argument(options['application_name'])
18
18
  @api_key = options['api_key']
19
19
  @secret = options['secret']
20
+ @old_secret = options['old_secret']
20
21
  @scope = format_array_argument(options['scope'])
21
22
 
22
23
  template 'shopify_app.rb', 'config/initializers/shopify_app.rb'
@@ -34,17 +35,6 @@ module ShopifyApp
34
35
  )
35
36
  end
36
37
 
37
- def create_shopify_session_repository_initializer
38
- copy_file 'shopify_session_repository.rb', 'config/initializers/shopify_session_repository.rb'
39
- end
40
-
41
- def inject_embedded_app_options_to_application
42
- if embedded_app?
43
- application "config.action_dispatch.default_headers.delete('X-Frame-Options')"
44
- application "config.action_dispatch.default_headers['P3P'] = 'CP=\"Not used\"'"
45
- end
46
- end
47
-
48
38
  def create_embedded_app_layout
49
39
  if embedded_app?
50
40
  copy_file 'embedded_app.html.erb', 'app/views/layouts/embedded_app.html.erb'