shopify_app 22.2.1 → 22.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.nvmrc +1 -1
- data/CHANGELOG.md +19 -1
- data/CONTRIBUTING.md +0 -5
- data/Gemfile.lock +75 -71
- data/README.md +8 -1
- data/app/assets/javascripts/shopify_app/redirect.js +3 -9
- data/app/controllers/shopify_app/sessions_controller.rb +2 -1
- data/app/views/shopify_app/shared/redirect.html.erb +10 -1
- data/config/locales/cs.yml +0 -18
- data/config/locales/da.yml +0 -15
- data/config/locales/de.yml +0 -17
- data/config/locales/en.yml +0 -11
- data/config/locales/es.yml +0 -17
- data/config/locales/fi.yml +0 -15
- data/config/locales/fr.yml +0 -18
- data/config/locales/it.yml +0 -16
- data/config/locales/ja.yml +0 -12
- data/config/locales/ko.yml +0 -14
- data/config/locales/nb.yml +0 -16
- data/config/locales/nl.yml +0 -16
- data/config/locales/pl.yml +0 -16
- data/config/locales/pt-BR.yml +0 -16
- data/config/locales/pt-PT.yml +0 -17
- data/config/locales/sv.yml +0 -16
- data/config/locales/th.yml +0 -15
- data/config/locales/tr.yml +0 -17
- data/config/locales/vi.yml +0 -17
- data/config/locales/zh-CN.yml +0 -11
- data/config/locales/zh-TW.yml +0 -11
- data/docs/Upgrading.md +17 -3
- data/docs/shopify_app/sessions.md +4 -1
- data/karma.conf.js +0 -3
- data/lib/generators/shopify_app/install/templates/shopify_app.rb.tt +2 -2
- data/lib/shopify_app/configuration.rb +6 -4
- data/lib/shopify_app/controller_concerns/csrf_protection.rb +2 -1
- data/lib/shopify_app/controller_concerns/embedded_app.rb +5 -1
- data/lib/shopify_app/controller_concerns/localization.rb +1 -1
- data/lib/shopify_app/controller_concerns/login_protection.rb +9 -2
- data/lib/shopify_app/controller_concerns/sanitized_params.rb +4 -0
- data/lib/shopify_app/controller_concerns/token_exchange.rb +11 -11
- data/lib/shopify_app/controller_concerns/with_shopify_id_token.rb +16 -9
- data/lib/shopify_app/engine.rb +4 -9
- data/lib/shopify_app/utils.rb +10 -1
- data/lib/shopify_app/version.rb +1 -1
- data/package.json +1 -1
- data/shopify_app.gemspec +2 -1
- data/yarn.lock +8 -8
- metadata +23 -26
- data/app/assets/images/storage_access.svg +0 -1
- data/app/assets/javascripts/shopify_app/app_bridge_3.7.8.js +0 -10
- data/app/assets/javascripts/shopify_app/app_bridge_redirect.js +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b4b936b4f5a91a7a73e53ec4e1df8d46d7cd75a67663ade6035524a32b01642
|
4
|
+
data.tar.gz: b9b5b3b9cc461fdee3d9b6447f888e68ed2bcd7e504084550118d2c9929e5072
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c0c813ac266810468a1100dfa7c9baf1af7c889f9a9dc865d796c19baea2d0bcaea7c8f79f6f27e1cbb7fa918f237563eac954735d4dcd77e6aa9f89038b34c
|
7
|
+
data.tar.gz: fe5fdd935be6cf251ab74ecc110178c3a5a07cfdf5aafc7a568db34fea7568bbca218c99c8223d18555079cdc080bd96ba951c4f800937acb94809e3ae89ca0f
|
data/.nvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
20.10.0
|
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,32 @@
|
|
1
1
|
Unreleased
|
2
2
|
----------
|
3
3
|
|
4
|
+
22.3.1 (July 26, 2024)
|
5
|
+
----------
|
6
|
+
- Handle edge case where we attempted to redirect to login when already at the top level [#1887](https://github.com/Shopify/shopify_app/pull/1887)
|
7
|
+
|
8
|
+
22.3.0 (July 24, 2024)
|
9
|
+
----------
|
10
|
+
- Deprecate `ShopifyApp::JWTMiddleware`. And remove internal usage. Any existing app code relying on decoded JWT contents set from `request.env` should instead include the `WithShopifyIdToken` concern and call its respective methods. [#1861](https://github.com/Shopify/shopify_app/pull/1861) [Migration Guide](/docs/Upgrading.md#v2300---removed-shopifyappjwtmiddleware)
|
11
|
+
- Handle scenario when invalid URI is passed to `sanitize_shop_domain` [#1852](https://github.com/Shopify/shopify_app/pull/1852)
|
12
|
+
- Remove references to old JS files during asset precompile [#1865](https://github.com/Shopify/shopify_app/pull/1865)
|
13
|
+
- Remove old translation keys for `enable_cookies_*`, `top_level_interaction_*` and `request_storage_access_*` [#1865](https://github.com/Shopify/shopify_app/pull/1865)
|
14
|
+
- Add invalid id token handling for `current_shopify_domain` method [#1868](https://github.com/Shopify/shopify_app/pull/1868)
|
15
|
+
- Keep original path and params when redirecting deep links to embed [#1869](https://github.com/Shopify/shopify_app/pull/1869)
|
16
|
+
- Fix managed install path for SPIN environments [#1877](https://github.com/Shopify/shopify_app/pull/1877)
|
17
|
+
- Migrate fullpage redirect to App Bridge CDN [#1870](https://github.com/Shopify/shopify_app/pull/1870)
|
18
|
+
- Improve embedded requests detection with `Sec-Fetch-Dest` header [#1873](https://github.com/Shopify/shopify_app/pull/1873)
|
19
|
+
- Fix bug where locale is not read from session if locale param is not present in app request [#1878](https://github.com/Shopify/shopify_app/pull/1878)
|
20
|
+
|
4
21
|
22.2.1 (May 6,2024)
|
22
|
+
----------
|
5
23
|
* Patch - Don't delete session on 401 errors during retry in `with_token_refetch` [#1844](https://github.com/Shopify/shopify_app/pull/1844)
|
6
24
|
|
7
25
|
22.2.0 (May 2,2024)
|
8
26
|
----------
|
9
27
|
* Add new zero redirect authorization strategy - `Token Exchange`.
|
10
28
|
- This strategy replaces the existing OAuth flow for embedded apps and remove the redirects that were previously necessary to complete OAuth.
|
11
|
-
See ["New embedded app authorization strategy"](/README.md/#new-embedded-app-authorization-strategy) for how to enable this feature.
|
29
|
+
See ["New embedded app authorization strategy (Token Exchange)"](/README.md/#new-embedded-app-authorization-strategy-token-exchange) for how to enable this feature.
|
12
30
|
- Related PRs: [#1817](https://github.com/Shopify/shopify_app/pull/1817),
|
13
31
|
[#1818](https://github.com/Shopify/shopify_app/pull/1818),
|
14
32
|
[#1819](https://github.com/Shopify/shopify_app/pull/1819),
|
data/CONTRIBUTING.md
CHANGED
@@ -89,8 +89,3 @@ To run tests, you'll need to make sure that your development environment is setu
|
|
89
89
|
* To run all tests: `bundle exec rake test`
|
90
90
|
* To run a specific test file: `bundle exec rake test TEST=test/controllers/callback_controller_test.rb`
|
91
91
|
* To run a single test: `bundle exec rake test TEST=test/controllers/callback_controller_test.rb:50` where `50` is the line number on or inside the test case.
|
92
|
-
|
93
|
-
### App Bridge client
|
94
|
-
|
95
|
-
This gem ships with a UMD version of the App Bridge client. It lives inside the assets folder: `app/assets/javascripts/shopify_app/`. To update the client, simply download the UMD build from [unpkg.com](https://unpkg.com/@shopify/app-bridge) and save it into the folder.
|
96
|
-
Please follow the convention of including the client version number in the filename. Finally, change the reference to the new App Bridge client inside `app/assets/javascripts/shopify_app/app_bridge_redirect.js`.
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
shopify_app (22.
|
4
|
+
shopify_app (22.3.1)
|
5
5
|
activeresource
|
6
6
|
addressable (~> 2.7)
|
7
7
|
jwt (>= 2.2.3)
|
@@ -13,68 +13,68 @@ PATH
|
|
13
13
|
GEM
|
14
14
|
remote: https://rubygems.org/
|
15
15
|
specs:
|
16
|
-
actioncable (6.1.7.
|
17
|
-
actionpack (= 6.1.7.
|
18
|
-
activesupport (= 6.1.7.
|
16
|
+
actioncable (6.1.7.8)
|
17
|
+
actionpack (= 6.1.7.8)
|
18
|
+
activesupport (= 6.1.7.8)
|
19
19
|
nio4r (~> 2.0)
|
20
20
|
websocket-driver (>= 0.6.1)
|
21
|
-
actionmailbox (6.1.7.
|
22
|
-
actionpack (= 6.1.7.
|
23
|
-
activejob (= 6.1.7.
|
24
|
-
activerecord (= 6.1.7.
|
25
|
-
activestorage (= 6.1.7.
|
26
|
-
activesupport (= 6.1.7.
|
21
|
+
actionmailbox (6.1.7.8)
|
22
|
+
actionpack (= 6.1.7.8)
|
23
|
+
activejob (= 6.1.7.8)
|
24
|
+
activerecord (= 6.1.7.8)
|
25
|
+
activestorage (= 6.1.7.8)
|
26
|
+
activesupport (= 6.1.7.8)
|
27
27
|
mail (>= 2.7.1)
|
28
|
-
actionmailer (6.1.7.
|
29
|
-
actionpack (= 6.1.7.
|
30
|
-
actionview (= 6.1.7.
|
31
|
-
activejob (= 6.1.7.
|
32
|
-
activesupport (= 6.1.7.
|
28
|
+
actionmailer (6.1.7.8)
|
29
|
+
actionpack (= 6.1.7.8)
|
30
|
+
actionview (= 6.1.7.8)
|
31
|
+
activejob (= 6.1.7.8)
|
32
|
+
activesupport (= 6.1.7.8)
|
33
33
|
mail (~> 2.5, >= 2.5.4)
|
34
34
|
rails-dom-testing (~> 2.0)
|
35
|
-
actionpack (6.1.7.
|
36
|
-
actionview (= 6.1.7.
|
37
|
-
activesupport (= 6.1.7.
|
35
|
+
actionpack (6.1.7.8)
|
36
|
+
actionview (= 6.1.7.8)
|
37
|
+
activesupport (= 6.1.7.8)
|
38
38
|
rack (~> 2.0, >= 2.0.9)
|
39
39
|
rack-test (>= 0.6.3)
|
40
40
|
rails-dom-testing (~> 2.0)
|
41
41
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
42
|
-
actiontext (6.1.7.
|
43
|
-
actionpack (= 6.1.7.
|
44
|
-
activerecord (= 6.1.7.
|
45
|
-
activestorage (= 6.1.7.
|
46
|
-
activesupport (= 6.1.7.
|
42
|
+
actiontext (6.1.7.8)
|
43
|
+
actionpack (= 6.1.7.8)
|
44
|
+
activerecord (= 6.1.7.8)
|
45
|
+
activestorage (= 6.1.7.8)
|
46
|
+
activesupport (= 6.1.7.8)
|
47
47
|
nokogiri (>= 1.8.5)
|
48
|
-
actionview (6.1.7.
|
49
|
-
activesupport (= 6.1.7.
|
48
|
+
actionview (6.1.7.8)
|
49
|
+
activesupport (= 6.1.7.8)
|
50
50
|
builder (~> 3.1)
|
51
51
|
erubi (~> 1.4)
|
52
52
|
rails-dom-testing (~> 2.0)
|
53
53
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
54
|
-
activejob (6.1.7.
|
55
|
-
activesupport (= 6.1.7.
|
54
|
+
activejob (6.1.7.8)
|
55
|
+
activesupport (= 6.1.7.8)
|
56
56
|
globalid (>= 0.3.6)
|
57
|
-
activemodel (6.1.7.
|
58
|
-
activesupport (= 6.1.7.
|
57
|
+
activemodel (6.1.7.8)
|
58
|
+
activesupport (= 6.1.7.8)
|
59
59
|
activemodel-serializers-xml (1.0.2)
|
60
60
|
activemodel (> 5.x)
|
61
61
|
activesupport (> 5.x)
|
62
62
|
builder (~> 3.1)
|
63
|
-
activerecord (6.1.7.
|
64
|
-
activemodel (= 6.1.7.
|
65
|
-
activesupport (= 6.1.7.
|
66
|
-
activeresource (6.
|
63
|
+
activerecord (6.1.7.8)
|
64
|
+
activemodel (= 6.1.7.8)
|
65
|
+
activesupport (= 6.1.7.8)
|
66
|
+
activeresource (6.1.0)
|
67
67
|
activemodel (>= 6.0)
|
68
68
|
activemodel-serializers-xml (~> 1.0)
|
69
69
|
activesupport (>= 6.0)
|
70
|
-
activestorage (6.1.7.
|
71
|
-
actionpack (= 6.1.7.
|
72
|
-
activejob (= 6.1.7.
|
73
|
-
activerecord (= 6.1.7.
|
74
|
-
activesupport (= 6.1.7.
|
70
|
+
activestorage (6.1.7.8)
|
71
|
+
actionpack (= 6.1.7.8)
|
72
|
+
activejob (= 6.1.7.8)
|
73
|
+
activerecord (= 6.1.7.8)
|
74
|
+
activesupport (= 6.1.7.8)
|
75
75
|
marcel (~> 1.0)
|
76
76
|
mini_mime (>= 1.1.0)
|
77
|
-
activesupport (6.1.7.
|
77
|
+
activesupport (6.1.7.8)
|
78
78
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
79
79
|
i18n (>= 1.6, < 2)
|
80
80
|
minitest (>= 5.1)
|
@@ -85,16 +85,16 @@ GEM
|
|
85
85
|
ast (2.4.2)
|
86
86
|
binding_of_caller (1.0.0)
|
87
87
|
debug_inspector (>= 0.0.1)
|
88
|
-
builder (3.
|
88
|
+
builder (3.3.0)
|
89
89
|
byebug (11.1.3)
|
90
90
|
coderay (1.1.3)
|
91
|
-
concurrent-ruby (1.
|
91
|
+
concurrent-ruby (1.3.3)
|
92
92
|
crack (0.4.5)
|
93
93
|
rexml
|
94
94
|
crass (1.0.6)
|
95
95
|
date (3.3.3)
|
96
96
|
debug_inspector (1.1.0)
|
97
|
-
erubi (1.
|
97
|
+
erubi (1.13.0)
|
98
98
|
globalid (1.1.0)
|
99
99
|
activesupport (>= 5.0)
|
100
100
|
hash_diff (1.1.1)
|
@@ -102,12 +102,12 @@ GEM
|
|
102
102
|
httparty (0.21.0)
|
103
103
|
mini_mime (>= 1.0.0)
|
104
104
|
multi_xml (>= 0.5.2)
|
105
|
-
i18n (1.
|
105
|
+
i18n (1.14.5)
|
106
106
|
concurrent-ruby (~> 1.0)
|
107
107
|
json (2.7.2)
|
108
108
|
jwt (2.7.0)
|
109
109
|
language_server-protocol (3.17.0.3)
|
110
|
-
loofah (2.
|
110
|
+
loofah (2.22.0)
|
111
111
|
crass (~> 1.0.2)
|
112
112
|
nokogiri (>= 1.12.0)
|
113
113
|
mail (2.8.1)
|
@@ -132,11 +132,11 @@ GEM
|
|
132
132
|
net-smtp (0.3.3)
|
133
133
|
net-protocol
|
134
134
|
nio4r (2.5.9)
|
135
|
-
nokogiri (1.16.
|
135
|
+
nokogiri (1.16.6-arm64-darwin)
|
136
136
|
racc (~> 1.4)
|
137
|
-
nokogiri (1.16.
|
137
|
+
nokogiri (1.16.6-x86_64-darwin)
|
138
138
|
racc (~> 1.4)
|
139
|
-
nokogiri (1.16.
|
139
|
+
nokogiri (1.16.6-x86_64-linux)
|
140
140
|
racc (~> 1.4)
|
141
141
|
oj (3.14.3)
|
142
142
|
openssl (3.1.0)
|
@@ -154,37 +154,39 @@ GEM
|
|
154
154
|
binding_of_caller (~> 1.0)
|
155
155
|
pry (~> 0.13)
|
156
156
|
public_suffix (5.0.1)
|
157
|
-
racc (1.
|
158
|
-
rack (2.2.
|
157
|
+
racc (1.8.0)
|
158
|
+
rack (2.2.9)
|
159
159
|
rack-test (2.1.0)
|
160
160
|
rack (>= 1.3)
|
161
|
-
rails (6.1.7.
|
162
|
-
actioncable (= 6.1.7.
|
163
|
-
actionmailbox (= 6.1.7.
|
164
|
-
actionmailer (= 6.1.7.
|
165
|
-
actionpack (= 6.1.7.
|
166
|
-
actiontext (= 6.1.7.
|
167
|
-
actionview (= 6.1.7.
|
168
|
-
activejob (= 6.1.7.
|
169
|
-
activemodel (= 6.1.7.
|
170
|
-
activerecord (= 6.1.7.
|
171
|
-
activestorage (= 6.1.7.
|
172
|
-
activesupport (= 6.1.7.
|
161
|
+
rails (6.1.7.8)
|
162
|
+
actioncable (= 6.1.7.8)
|
163
|
+
actionmailbox (= 6.1.7.8)
|
164
|
+
actionmailer (= 6.1.7.8)
|
165
|
+
actionpack (= 6.1.7.8)
|
166
|
+
actiontext (= 6.1.7.8)
|
167
|
+
actionview (= 6.1.7.8)
|
168
|
+
activejob (= 6.1.7.8)
|
169
|
+
activemodel (= 6.1.7.8)
|
170
|
+
activerecord (= 6.1.7.8)
|
171
|
+
activestorage (= 6.1.7.8)
|
172
|
+
activesupport (= 6.1.7.8)
|
173
173
|
bundler (>= 1.15.0)
|
174
|
-
railties (= 6.1.7.
|
174
|
+
railties (= 6.1.7.8)
|
175
175
|
sprockets-rails (>= 2.0.0)
|
176
176
|
rails-controller-testing (1.0.5)
|
177
177
|
actionpack (>= 5.0.1.rc1)
|
178
178
|
actionview (>= 5.0.1.rc1)
|
179
179
|
activesupport (>= 5.0.1.rc1)
|
180
|
-
rails-dom-testing (2.0
|
181
|
-
activesupport (>=
|
180
|
+
rails-dom-testing (2.2.0)
|
181
|
+
activesupport (>= 5.0.0)
|
182
|
+
minitest
|
182
183
|
nokogiri (>= 1.6)
|
183
|
-
rails-html-sanitizer (1.
|
184
|
-
loofah (~> 2.
|
185
|
-
|
186
|
-
|
187
|
-
|
184
|
+
rails-html-sanitizer (1.6.0)
|
185
|
+
loofah (~> 2.21)
|
186
|
+
nokogiri (~> 1.14)
|
187
|
+
railties (6.1.7.8)
|
188
|
+
actionpack (= 6.1.7.8)
|
189
|
+
activesupport (= 6.1.7.8)
|
188
190
|
method_source
|
189
191
|
rake (>= 12.2)
|
190
192
|
thor (~> 1.0)
|
@@ -194,7 +196,8 @@ GEM
|
|
194
196
|
redirect_safely (1.0.0)
|
195
197
|
activemodel
|
196
198
|
regexp_parser (2.9.0)
|
197
|
-
rexml (3.2
|
199
|
+
rexml (3.3.2)
|
200
|
+
strscan
|
198
201
|
rubocop (1.62.1)
|
199
202
|
json (~> 2.3)
|
200
203
|
language_server-protocol (>= 3.17.0)
|
@@ -239,6 +242,7 @@ GEM
|
|
239
242
|
sqlite3 (1.7.3-arm64-darwin)
|
240
243
|
sqlite3 (1.7.3-x86_64-darwin)
|
241
244
|
sqlite3 (1.7.3-x86_64-linux)
|
245
|
+
strscan (3.1.0)
|
242
246
|
syntax_tree (6.1.1)
|
243
247
|
prettier_print (>= 1.2.0)
|
244
248
|
thor (1.2.2)
|
@@ -253,7 +257,7 @@ GEM
|
|
253
257
|
websocket-driver (0.7.5)
|
254
258
|
websocket-extensions (>= 0.1.0)
|
255
259
|
websocket-extensions (0.1.5)
|
256
|
-
zeitwerk (2.6.
|
260
|
+
zeitwerk (2.6.16)
|
257
261
|
|
258
262
|
PLATFORMS
|
259
263
|
arm64-darwin-21
|
data/README.md
CHANGED
@@ -148,6 +148,10 @@ authenticated API access.
|
|
148
148
|
|
149
149
|
1. Enable [Shopify managed installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation)
|
150
150
|
by configuring your scopes [through the Shopify CLI](https://shopify.dev/docs/apps/tools/cli/configuration).
|
151
|
+
> [!NOTE]
|
152
|
+
> Ensure you don't have `use_legacy_install_flow = true` in your `shopify.app.toml` configuration file. If `use_legacy_install_flow` is true, Shopify will not manage the installation process for your app.
|
153
|
+
> You should remove the `use_legacy_install_flow` line from your `shopify.app.toml` configuration file or set it to `false`.
|
154
|
+
|
151
155
|
2. Enable the new auth strategy in your app's ShopifyApp configuration file.
|
152
156
|
|
153
157
|
```ruby
|
@@ -165,7 +169,10 @@ ShopifyApp.configure do |config|
|
|
165
169
|
end
|
166
170
|
|
167
171
|
```
|
168
|
-
3.
|
172
|
+
3. Handle special callback logic. If your app has overridden the OAuth CallbackController to run special tasks post authorization,
|
173
|
+
you'll need to create and configure a custom PostAuthenticateTasks class to run these tasks after the token exchange. The original
|
174
|
+
OAuth CallbackController will not be triggered anymore. See [Post Authenticate Tasks documentation](/docs/shopify_app/authentication.md#post-authenticate-tasks) for more information.
|
175
|
+
4. Enjoy a smoother and faster app installation process.
|
169
176
|
|
170
177
|
### API Versioning
|
171
178
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
//= require ./app_bridge_redirect.js
|
2
|
-
|
3
1
|
(function () {
|
4
2
|
function redirect() {
|
5
3
|
var redirectTargetElement = document.getElementById("redirection-target");
|
@@ -9,14 +7,10 @@
|
|
9
7
|
}
|
10
8
|
|
11
9
|
var targetInfo = JSON.parse(redirectTargetElement.dataset.target);
|
10
|
+
var normalizedLink = document.createElement('a');
|
11
|
+
normalizedLink.href = targetInfo.url;
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
if (appBridgeUtils.isShopifyEmbedded()) {
|
16
|
-
window.appBridgeRedirect(targetInfo.url);
|
17
|
-
} else {
|
18
|
-
window.top.location.href = targetInfo.url;
|
19
|
-
}
|
13
|
+
open(normalizedLink.href, '_top');
|
20
14
|
}
|
21
15
|
|
22
16
|
document.addEventListener("DOMContentLoaded", redirect);
|
@@ -52,7 +52,8 @@ module ShopifyApp
|
|
52
52
|
|
53
53
|
def start_install
|
54
54
|
shop_name = sanitized_shop_name.split(".").first
|
55
|
-
|
55
|
+
unified_admin_path = ShopifyApp::Utils.unified_admin_path(shop_name)
|
56
|
+
install_path = "#{unified_admin_path}/oauth/install?client_id=#{ShopifyApp.configuration.api_key}"
|
56
57
|
redirect_to(install_path, allow_other_host: true)
|
57
58
|
end
|
58
59
|
|
@@ -5,9 +5,18 @@
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
6
6
|
<base target="_top">
|
7
7
|
<title>Redirecting…</title>
|
8
|
+
|
9
|
+
<%
|
10
|
+
is_iframe = local_assigns.key?(:is_iframe) ? is_iframe : true
|
11
|
+
if is_iframe
|
12
|
+
%>
|
13
|
+
<meta name="shopify-api-key" content="<%= ShopifyApp.configuration.api_key %>">
|
14
|
+
<%= javascript_include_tag "https://cdn.shopify.com/shopifycloud/app-bridge.js" %>
|
15
|
+
<% end %>
|
16
|
+
|
8
17
|
<%= javascript_include_tag('shopify_app/redirect', crossorigin: 'anonymous', integrity: true) %>
|
9
18
|
</head>
|
10
|
-
<body
|
19
|
+
<body>
|
11
20
|
<%=
|
12
21
|
content_tag(:div, nil,
|
13
22
|
id: 'redirection-target',
|
data/config/locales/cs.yml
CHANGED
@@ -3,21 +3,3 @@ cs:
|
|
3
3
|
logged_out: Odhlášení proběhlo úspěšně
|
4
4
|
could_not_log_in: Nelze se přihlásit do obchodu Shopify
|
5
5
|
invalid_shop_url: Neplatná doména obchodu
|
6
|
-
enable_cookies_heading: Zapnout soubory cookie z aplikace %{app}
|
7
|
-
enable_cookies_body: Pokud chcete v Shopify používat aplikaci %{app}, musíte soubory
|
8
|
-
cookie v tomto prohlížeči povolit ručně.
|
9
|
-
enable_cookies_footer: Soubory cookie umožňují, aby vás aplikace ověřila pomocí
|
10
|
-
dočasného uchování preferencí a osobních údajů. Jejich platnost vyprší po 30 dnech.
|
11
|
-
enable_cookies_action: Povolit soubory cookie
|
12
|
-
top_level_interaction_heading: Váš prohlížeč potřebuje ověřit aplikaci %{app}
|
13
|
-
top_level_interaction_body: Váš prohlížeč vyžaduje, aby si od vás aplikace, jako
|
14
|
-
je %{app}, nejdřív vyžádaly přístup k souborům cookie, než je pro vás Shopify
|
15
|
-
otevře.
|
16
|
-
top_level_interaction_action: Pokračovat
|
17
|
-
request_storage_access_heading: Aplikace %{app} potřebuje získat přístup k souborům
|
18
|
-
cookie
|
19
|
-
request_storage_access_body: Tato aplikace vám umožní ověření prostřednictvím dočasného
|
20
|
-
uchování vašich osobních údajů. Pokud chcete používat tuto aplikaci, klikněte
|
21
|
-
na tlačítko Pokračovat a povolte soubory cookie.
|
22
|
-
request_storage_access_footer: Platnost souborů cookie vyprší po 30 dnech.
|
23
|
-
request_storage_access_action: Pokračovat
|
data/config/locales/da.yml
CHANGED
@@ -3,18 +3,3 @@ da:
|
|
3
3
|
logged_out: Logget ud
|
4
4
|
could_not_log_in: Kunne ikke logge ind på Shopify-butik
|
5
5
|
invalid_shop_url: Ugyldig butiksdomæne
|
6
|
-
enable_cookies_heading: Aktivér cookies fra %{app}
|
7
|
-
enable_cookies_body: Du skal manuelt aktivere cookies i denne browser for at kunne
|
8
|
-
bruge %{app} i Shopify.
|
9
|
-
enable_cookies_footer: Cookies lader appen godkende dig ved at gemme dine præferencer
|
10
|
-
og personlige oplysninger midlertidigt. De udløber efter 30 dage.
|
11
|
-
enable_cookies_action: Aktivér cookies
|
12
|
-
top_level_interaction_heading: Din browser skal godkende %{app}
|
13
|
-
top_level_interaction_body: Din browser kræver, at apps som f.eks. %{app} spørger
|
14
|
-
dig om adgang til cookies, inden Shopify kan åbne den for dig.
|
15
|
-
top_level_interaction_action: Fortsæt
|
16
|
-
request_storage_access_heading: "%{app} skal have adgang til cookies"
|
17
|
-
request_storage_access_body: Det lader appen godkende dig ved at gemme dine personlige
|
18
|
-
oplysninger midlertidigt. Klik på forsæt, og tillad cookies for at bruge appen.
|
19
|
-
request_storage_access_footer: Cookies udløber efter 30 dage.
|
20
|
-
request_storage_access_action: Fortsæt
|
data/config/locales/de.yml
CHANGED
@@ -3,20 +3,3 @@ de:
|
|
3
3
|
logged_out: Erfolgreich ausgelogt
|
4
4
|
could_not_log_in: Shopify Store Login fehlgeschlagen
|
5
5
|
invalid_shop_url: Ungültige Shop-Domain
|
6
|
-
enable_cookies_heading: Cookies von %{app} aktivieren
|
7
|
-
enable_cookies_body: Du musst Cookies in diesem Browser manuell aktivieren, um %{app}
|
8
|
-
in Shopify verwenden zu können.
|
9
|
-
enable_cookies_footer: Mithilfe von Cookies kann die App dich authentifizieren,
|
10
|
-
indem deine Einstellungen und personenbezogenen Daten vorübergehend gespeichert
|
11
|
-
werden. Sie laufen nach 30 Tagen ab.
|
12
|
-
enable_cookies_action: Cookies aktivieren
|
13
|
-
top_level_interaction_heading: Dein Browser muss %{app} authentifizieren
|
14
|
-
top_level_interaction_body: Dein Browser verlangt, dass Apps wie %{app} dich um
|
15
|
-
Zugriff auf Cookies bitten, bevor Shopify sie für dich öffnen kann.
|
16
|
-
top_level_interaction_action: Weiter
|
17
|
-
request_storage_access_heading: "%{app} braucht Zugriff auf Cookies"
|
18
|
-
request_storage_access_body: Damit kann die App dich authentifizieren, indem deine
|
19
|
-
Einstellungen und personenbezogenen Daten vorübergehend gespeichert werden. Klicke
|
20
|
-
auf "Weiter" und erlaube Cookies, um die App zu verwenden.
|
21
|
-
request_storage_access_footer: Cookies laufen nach 30 Tagen ab.
|
22
|
-
request_storage_access_action: Weiter
|
data/config/locales/en.yml
CHANGED
@@ -2,14 +2,3 @@ en:
|
|
2
2
|
logged_out: 'Successfully logged out'
|
3
3
|
could_not_log_in: 'Could not log in to Shopify store'
|
4
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 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'
|
data/config/locales/es.yml
CHANGED
@@ -3,20 +3,3 @@ es:
|
|
3
3
|
logged_out: Cerrar sesión
|
4
4
|
could_not_log_in: No se pudo iniciar sesión en tu tienda Shopify
|
5
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 como %{app} para
|
15
|
-
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
|
data/config/locales/fi.yml
CHANGED
@@ -3,18 +3,3 @@ fi:
|
|
3
3
|
logged_out: Olet kirjautunut ulos
|
4
4
|
could_not_log_in: Kirjautuminen Shopify-kauppaan ei onnistunut
|
5
5
|
invalid_shop_url: Virheellinen kaupan verkkotunnus
|
6
|
-
enable_cookies_heading: Ota käyttöön sovelluksen %{app} evästeet
|
7
|
-
enable_cookies_body: Sinun on otettava evästeet käyttöön manuaalisesti tässä selaimessa,
|
8
|
-
jotta voit käyttää sovellusta %{app} Shopifyssa.
|
9
|
-
enable_cookies_footer: Evästeiden avulla sovellus voi todentaa sinut tallentamalla
|
10
|
-
asetuksesi ja henkilötietosi tilapäisesti. Ne vanhenevat 30 päivän kuluttua.
|
11
|
-
enable_cookies_action: Ota evästeet käyttöön
|
12
|
-
top_level_interaction_heading: Selaimesi täytyy todentaa %{app}
|
13
|
-
top_level_interaction_body: Selaimesi vaatii sovelluksia, kuten %{app}, pyytämään
|
14
|
-
sinulta luvan evästeiden käyttöön, ennen kuin Shopify voi avata sovelluksen.
|
15
|
-
top_level_interaction_action: Jatka
|
16
|
-
request_storage_access_heading: "%{app} edellyttää evästeiden käyttöä"
|
17
|
-
request_storage_access_body: Näin sovellus voi todentaa sinut tallentamalla henkilötietosi
|
18
|
-
tilapäisesti. Klikkaa Jatka ja salli evästeet sovelluksen käyttämiseksi.
|
19
|
-
request_storage_access_footer: Evästeet vanhenevat 30 päivän kuluttua.
|
20
|
-
request_storage_access_action: Jatka
|
data/config/locales/fr.yml
CHANGED
@@ -3,21 +3,3 @@ fr:
|
|
3
3
|
logged_out: Vous êtes déconnecté(e)
|
4
4
|
could_not_log_in: Impossible de se connecter à la boutique Shopify
|
5
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 telles que
|
15
|
-
%{app} pour vous demander l'accès aux cookies avant que Shopify ne puisse l'ouvrir
|
16
|
-
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
|
data/config/locales/it.yml
CHANGED
@@ -3,19 +3,3 @@ it:
|
|
3
3
|
logged_out: Disconnessione effettuata correttamente
|
4
4
|
could_not_log_in: Impossibile accedere al negozio Shopify
|
5
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 come %{app} ti chiedano
|
14
|
-
l'accesso ai cookie prima dell'apertura automatica da parte di Shopify.
|
15
|
-
top_level_interaction_action: Continua
|
16
|
-
request_storage_access_heading: "%{app} deve accedere ai cookie"
|
17
|
-
request_storage_access_body: L'app potrà così autenticarti memorizzando temporaneamente
|
18
|
-
le tue informazioni personali. Clicca su Continua e consenti ai cookie di utilizzare
|
19
|
-
l'app.
|
20
|
-
request_storage_access_footer: I cookie scadono dopo 30 giorni.
|
21
|
-
request_storage_access_action: Continua
|
data/config/locales/ja.yml
CHANGED
@@ -3,15 +3,3 @@ ja:
|
|
3
3
|
logged_out: ログアウトに成功しました
|
4
4
|
could_not_log_in: Shopifyストアにログインできませんでした
|
5
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}はCookieへのアクセス許可が必要です"
|
14
|
-
request_storage_access_body: Cookieを使用すると、個人情報を一時的に保存することで、アプリ認証を受けることができます。[続ける]
|
15
|
-
をクリックすると、アプリはCookieを利用します。
|
16
|
-
request_storage_access_footer: Cookieは30日後に有効期限が切れます。
|
17
|
-
request_storage_access_action: 続ける
|
data/config/locales/ko.yml
CHANGED
@@ -3,17 +3,3 @@ ko:
|
|
3
3
|
logged_out: 성공적으로 로그아웃 되었습니다.
|
4
4
|
could_not_log_in: Shopify 스토어에 로그인할 수 없습니다.
|
5
5
|
invalid_shop_url: 유효하지 않은 상점 도메인
|
6
|
-
enable_cookies_heading: "%{app}에서 쿠키를 사용 가능"
|
7
|
-
enable_cookies_body: Shopify 내에서 %{app} 을 사용하기 위해 이 브라우저에서 쿠키를 수동으로 사용할 수 있습니다.
|
8
|
-
enable_cookies_footer: 쿠키를 사용하면 개인의 선호나 정보를 임시로 저장하여 앱에서 사용자를 인증할 수 있습니다. 쿠키는 30일
|
9
|
-
후에 만료됩니다.
|
10
|
-
enable_cookies_action: 쿠리 사용 가능
|
11
|
-
top_level_interaction_heading: 브라우저에서 %{app} 을 인증해야 합니다.
|
12
|
-
top_level_interaction_body: Shopify를 열기 전 쿠키에 엑세스하려면 %{app} 과 같은 앱 들이 브라우저에 설치되어야
|
13
|
-
합니다.
|
14
|
-
top_level_interaction_action: 계속
|
15
|
-
request_storage_access_heading: "%{app}에서 쿠키에 접근해야 합니다."
|
16
|
-
request_storage_access_body: 이를 통해 개인 정보를 임시로 저장하여 앱에서 사용자를 인증할 수 있습니다. 계속 클릭하여
|
17
|
-
쿠키로 앱을 사용하세요.
|
18
|
-
request_storage_access_footer: 쿠키는 30일 후에 만료됩니다.
|
19
|
-
request_storage_access_action: 계속
|
data/config/locales/nb.yml
CHANGED
@@ -3,19 +3,3 @@ nb:
|
|
3
3
|
logged_out: Logget ut
|
4
4
|
could_not_log_in: Kunne ikke logge på Shopify-butikken
|
5
5
|
invalid_shop_url: Ugyldig butikkdomene
|
6
|
-
enable_cookies_heading: Aktiver informasjonskapsler fra %{app}
|
7
|
-
enable_cookies_body: Du kan manuelt aktivere informasjonskapsler i denne nettleseren
|
8
|
-
for å kunne bruke %{app} i Shopify.
|
9
|
-
enable_cookies_footer: Informasjonskapsler lar appen autentisere deg ved å midlertidig
|
10
|
-
lagre innstillingene og personopplysningene dine. De går ut etter 30 dager.
|
11
|
-
enable_cookies_action: Aktiver informasjonskapsler
|
12
|
-
top_level_interaction_heading: Nettleseren din må autentisere %{app}
|
13
|
-
top_level_interaction_body: Nettleseren din krever apper som %{app} for å spørre
|
14
|
-
deg om tilgang til informasjonskapsler før Shopify kan åpne den for deg.
|
15
|
-
top_level_interaction_action: Fortsett
|
16
|
-
request_storage_access_heading: "%{app} må ha tilgang til informasjonskapsler"
|
17
|
-
request_storage_access_body: Informasjonskapsler lar appen autentisere deg ved å
|
18
|
-
midlertidig lagre personopplysningene dine. Klikk på Fortsett og gi informasjonskapsler
|
19
|
-
tillatelse til å bruke appen.
|
20
|
-
request_storage_access_footer: Informasjonskapslene går ut etter 30 dager.
|
21
|
-
request_storage_access_action: Fortsett
|
data/config/locales/nl.yml
CHANGED
@@ -3,19 +3,3 @@ nl:
|
|
3
3
|
logged_out: Je bent afgemeld
|
4
4
|
could_not_log_in: Kon niet inloggen bij Shopify-winkel
|
5
5
|
invalid_shop_url: Ongeldig winkeldomein
|
6
|
-
enable_cookies_heading: Schakel cookies in van %{app}
|
7
|
-
enable_cookies_body: Je moet cookies in deze browser handmatig inschakelen om %{app}
|
8
|
-
binnen Shopify te gebruiken.
|
9
|
-
enable_cookies_footer: Met cookies kan de app je verifiëren door je 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: Je browser moet %{app} verifiëren
|
13
|
-
top_level_interaction_body: Je browser heeft apps nodig zoals %{app} om je toegang
|
14
|
-
te vragen tot cookies voordat Shopify het voor je 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 je verifiëren door je 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
|