shopify_app 17.1.0 → 18.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/CODEOWNERS +1 -0
- data/.github/workflows/build.yml +4 -1
- data/CHANGELOG.md +23 -1
- data/Gemfile.lock +96 -84
- data/README.md +1 -1
- data/app/assets/javascripts/shopify_app/post_redirect.js +9 -0
- data/app/controllers/shopify_app/callback_controller.rb +1 -2
- data/app/controllers/shopify_app/sessions_controller.rb +5 -1
- data/app/views/shopify_app/shared/post_redirect_to_auth_shopify.html.erb +13 -0
- data/config/locales/nl.yml +1 -1
- data/docs/Troubleshooting.md +147 -4
- data/docs/Upgrading.md +16 -0
- data/docs/shopify_app/handling-access-scopes-changes.md +8 -2
- data/docs/shopify_app/session-repository.md +1 -1
- data/lib/generators/shopify_app/home_controller/templates/home_controller.rb +8 -0
- data/lib/generators/shopify_app/home_controller/templates/index.html.erb +1 -1
- data/lib/generators/shopify_app/home_controller/templates/unauthenticated_home_controller.rb +1 -0
- data/lib/generators/shopify_app/install/templates/embedded_app.html.erb +2 -1
- data/lib/generators/shopify_app/install/templates/shopify_app.js +1 -1
- data/lib/shopify_app.rb +1 -0
- data/lib/shopify_app/controller_concerns/login_protection.rb +10 -3
- data/lib/shopify_app/engine.rb +1 -0
- data/lib/shopify_app/middleware/same_site_cookie_middleware.rb +1 -1
- data/lib/shopify_app/version.rb +1 -1
- data/package.json +1 -1
- data/service.yml +1 -4
- data/shopify_app.gemspec +4 -3
- data/yarn.lock +22 -22
- metadata +26 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05a2dce084fe578139757483538102b6f57d1fc4ec6935ae8ce4d11df7a914cf
|
4
|
+
data.tar.gz: 789a109b204a143850cc0c7d3fe14c6d4519b94d89671d46ddb09101283ceb7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2cee778a503dc5652623f9b2d6e82b9844dff44840d77b57e8ecc4051bb7b3dd1707ba35cc2df93f348006da29251290b82c32988499f0e864d65d0d868bf00e
|
7
|
+
data.tar.gz: 6ff6e53fb49335ee6e151ce8d21d2b7bd66b8f9267b9ed03ef589282bc9db2e5e9a3c17e4d2dfcec6fca5cc7fe59676d28dc4762254b6dfab356f2bcc9c47ec4
|
data/.github/CODEOWNERS
CHANGED
data/.github/workflows/build.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,27 @@
|
|
1
|
-
|
1
|
+
18.0.1 (May 7, 2021)
|
2
2
|
----------
|
3
|
+
* Fix bug causing OAuth flow to fail due to CSP violation. [#1265](https://github.com/Shopify/shopify_app/pull/1265)
|
4
|
+
|
5
|
+
18.0.0 (May 3, 2021)
|
6
|
+
----------
|
7
|
+
* Support OmniAuth 2.x
|
8
|
+
* If your app has custom OmniAuth configuration, please refer to the [OmniAuth 2.0 upgrade guide](https://github.com/omniauth/omniauth/wiki/Upgrading-to-2.0).
|
9
|
+
* Support App Bridge version 2.x in the Embedded App layout. [#1241](https://github.com/Shopify/shopify_app/pull/1241)
|
10
|
+
|
11
|
+
17.2.1 (April 1, 2021)
|
12
|
+
----------
|
13
|
+
* Bug fix: Lock the CDN App Bridge version to `v1.X.Y` in the Embedded App layout [#1238](https://github.com/Shopify/shopify_app/pull/1238)
|
14
|
+
* App Bridge `v2.0` is a non-backwards compatible release
|
15
|
+
* A future major shopify_app gem release will support only App Bridge `v2.0`
|
16
|
+
|
17
|
+
17.2.0 (April 1, 2021)
|
18
|
+
----------
|
19
|
+
* Support Rails `v6.1` [#1221](https://github.com/Shopify/shopify_app/pull/1221)
|
20
|
+
* Check out [Upgrading to `v17.2.0`](/docs/Upgrading.md#upgrading-to-v1720) in the Upgrading.md guide for the changes needed to support Rails `v6.1`
|
21
|
+
|
22
|
+
17.1.1 (March 12, 2021)
|
23
|
+
----------
|
24
|
+
* Fix issues with mocking OmniAuth callback controller tests [#1210](https://github.com/Shopify/shopify_app/pull/1210)
|
3
25
|
|
4
26
|
17.1.0 (March 5, 2021)
|
5
27
|
----------
|
data/Gemfile.lock
CHANGED
@@ -1,80 +1,85 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
shopify_app (
|
4
|
+
shopify_app (18.0.1)
|
5
5
|
browser_sniffer (~> 1.2.2)
|
6
|
-
jwt (
|
7
|
-
omniauth-
|
8
|
-
|
6
|
+
jwt (>= 2.2.3)
|
7
|
+
omniauth-rails_csrf_protection
|
8
|
+
omniauth-shopify-oauth2 (~> 2.3)
|
9
|
+
rails (> 5.2.1, < 6.2)
|
9
10
|
redirect_safely (~> 1.0)
|
10
11
|
shopify_api (~> 9.4)
|
11
12
|
|
12
13
|
GEM
|
13
14
|
remote: https://rubygems.org/
|
14
15
|
specs:
|
15
|
-
actioncable (6.
|
16
|
-
actionpack (= 6.
|
16
|
+
actioncable (6.1.3.1)
|
17
|
+
actionpack (= 6.1.3.1)
|
18
|
+
activesupport (= 6.1.3.1)
|
17
19
|
nio4r (~> 2.0)
|
18
20
|
websocket-driver (>= 0.6.1)
|
19
|
-
actionmailbox (6.
|
20
|
-
actionpack (= 6.
|
21
|
-
activejob (= 6.
|
22
|
-
activerecord (= 6.
|
23
|
-
activestorage (= 6.
|
24
|
-
activesupport (= 6.
|
21
|
+
actionmailbox (6.1.3.1)
|
22
|
+
actionpack (= 6.1.3.1)
|
23
|
+
activejob (= 6.1.3.1)
|
24
|
+
activerecord (= 6.1.3.1)
|
25
|
+
activestorage (= 6.1.3.1)
|
26
|
+
activesupport (= 6.1.3.1)
|
25
27
|
mail (>= 2.7.1)
|
26
|
-
actionmailer (6.
|
27
|
-
actionpack (= 6.
|
28
|
-
actionview (= 6.
|
29
|
-
activejob (= 6.
|
28
|
+
actionmailer (6.1.3.1)
|
29
|
+
actionpack (= 6.1.3.1)
|
30
|
+
actionview (= 6.1.3.1)
|
31
|
+
activejob (= 6.1.3.1)
|
32
|
+
activesupport (= 6.1.3.1)
|
30
33
|
mail (~> 2.5, >= 2.5.4)
|
31
34
|
rails-dom-testing (~> 2.0)
|
32
|
-
actionpack (6.
|
33
|
-
actionview (= 6.
|
34
|
-
activesupport (= 6.
|
35
|
-
rack (~> 2.0, >= 2.0.
|
35
|
+
actionpack (6.1.3.1)
|
36
|
+
actionview (= 6.1.3.1)
|
37
|
+
activesupport (= 6.1.3.1)
|
38
|
+
rack (~> 2.0, >= 2.0.9)
|
36
39
|
rack-test (>= 0.6.3)
|
37
40
|
rails-dom-testing (~> 2.0)
|
38
41
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
39
|
-
actiontext (6.
|
40
|
-
actionpack (= 6.
|
41
|
-
activerecord (= 6.
|
42
|
-
activestorage (= 6.
|
43
|
-
activesupport (= 6.
|
42
|
+
actiontext (6.1.3.1)
|
43
|
+
actionpack (= 6.1.3.1)
|
44
|
+
activerecord (= 6.1.3.1)
|
45
|
+
activestorage (= 6.1.3.1)
|
46
|
+
activesupport (= 6.1.3.1)
|
44
47
|
nokogiri (>= 1.8.5)
|
45
|
-
actionview (6.
|
46
|
-
activesupport (= 6.
|
48
|
+
actionview (6.1.3.1)
|
49
|
+
activesupport (= 6.1.3.1)
|
47
50
|
builder (~> 3.1)
|
48
51
|
erubi (~> 1.4)
|
49
52
|
rails-dom-testing (~> 2.0)
|
50
53
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
51
|
-
activejob (6.
|
52
|
-
activesupport (= 6.
|
54
|
+
activejob (6.1.3.1)
|
55
|
+
activesupport (= 6.1.3.1)
|
53
56
|
globalid (>= 0.3.6)
|
54
|
-
activemodel (6.
|
55
|
-
activesupport (= 6.
|
57
|
+
activemodel (6.1.3.1)
|
58
|
+
activesupport (= 6.1.3.1)
|
56
59
|
activemodel-serializers-xml (1.0.2)
|
57
60
|
activemodel (> 5.x)
|
58
61
|
activesupport (> 5.x)
|
59
62
|
builder (~> 3.1)
|
60
|
-
activerecord (6.
|
61
|
-
activemodel (= 6.
|
62
|
-
activesupport (= 6.
|
63
|
+
activerecord (6.1.3.1)
|
64
|
+
activemodel (= 6.1.3.1)
|
65
|
+
activesupport (= 6.1.3.1)
|
63
66
|
activeresource (5.1.1)
|
64
67
|
activemodel (>= 5.0, < 7)
|
65
68
|
activemodel-serializers-xml (~> 1.0)
|
66
69
|
activesupport (>= 5.0, < 7)
|
67
|
-
activestorage (6.
|
68
|
-
actionpack (= 6.
|
69
|
-
activejob (= 6.
|
70
|
-
activerecord (= 6.
|
71
|
-
|
72
|
-
|
70
|
+
activestorage (6.1.3.1)
|
71
|
+
actionpack (= 6.1.3.1)
|
72
|
+
activejob (= 6.1.3.1)
|
73
|
+
activerecord (= 6.1.3.1)
|
74
|
+
activesupport (= 6.1.3.1)
|
75
|
+
marcel (~> 1.0.0)
|
76
|
+
mini_mime (~> 1.0.2)
|
77
|
+
activesupport (6.1.3.1)
|
73
78
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
74
|
-
i18n (>=
|
75
|
-
minitest (
|
76
|
-
tzinfo (~>
|
77
|
-
zeitwerk (~> 2.
|
79
|
+
i18n (>= 1.6, < 2)
|
80
|
+
minitest (>= 5.1)
|
81
|
+
tzinfo (~> 2.0)
|
82
|
+
zeitwerk (~> 2.3)
|
78
83
|
addressable (2.7.0)
|
79
84
|
public_suffix (>= 2.0.2, < 5.0)
|
80
85
|
ast (2.4.1)
|
@@ -88,15 +93,19 @@ GEM
|
|
88
93
|
crack (0.4.4)
|
89
94
|
crass (1.0.6)
|
90
95
|
debug_inspector (0.0.3)
|
91
|
-
erubi (1.
|
92
|
-
faraday (1.
|
96
|
+
erubi (1.10.0)
|
97
|
+
faraday (1.4.1)
|
98
|
+
faraday-excon (~> 1.1)
|
93
99
|
faraday-net_http (~> 1.0)
|
100
|
+
faraday-net_http_persistent (~> 1.1)
|
94
101
|
multipart-post (>= 1.2, < 3)
|
95
|
-
ruby2_keywords
|
102
|
+
ruby2_keywords (>= 0.0.4)
|
103
|
+
faraday-excon (1.1.0)
|
96
104
|
faraday-net_http (1.0.1)
|
105
|
+
faraday-net_http_persistent (1.1.0)
|
97
106
|
globalid (0.4.2)
|
98
107
|
activesupport (>= 4.2.0)
|
99
|
-
graphql (1.12.
|
108
|
+
graphql (1.12.8)
|
100
109
|
graphql-client (0.16.0)
|
101
110
|
activesupport (>= 3.0)
|
102
111
|
graphql (~> 1.8)
|
@@ -104,17 +113,15 @@ GEM
|
|
104
113
|
hashie (4.1.0)
|
105
114
|
i18n (1.8.9)
|
106
115
|
concurrent-ruby (~> 1.0)
|
107
|
-
jwt (2.2.
|
108
|
-
loofah (2.
|
116
|
+
jwt (2.2.3)
|
117
|
+
loofah (2.9.0)
|
109
118
|
crass (~> 1.0.2)
|
110
119
|
nokogiri (>= 1.5.9)
|
111
120
|
mail (2.7.1)
|
112
121
|
mini_mime (>= 0.1.1)
|
113
|
-
marcel (0.
|
114
|
-
mimemagic (~> 0.3.2)
|
122
|
+
marcel (1.0.1)
|
115
123
|
method_source (0.9.2)
|
116
|
-
|
117
|
-
mini_mime (1.0.2)
|
124
|
+
mini_mime (1.0.3)
|
118
125
|
mini_portile2 (2.5.0)
|
119
126
|
minitest (5.14.4)
|
120
127
|
mocha (1.11.2)
|
@@ -122,24 +129,28 @@ GEM
|
|
122
129
|
multi_xml (0.6.0)
|
123
130
|
multipart-post (2.1.1)
|
124
131
|
nio4r (2.5.7)
|
125
|
-
nokogiri (1.11.
|
132
|
+
nokogiri (1.11.2)
|
126
133
|
mini_portile2 (~> 2.5.0)
|
127
134
|
racc (~> 1.4)
|
128
|
-
oauth2 (1.4.
|
135
|
+
oauth2 (1.4.7)
|
129
136
|
faraday (>= 0.8, < 2.0)
|
130
137
|
jwt (>= 1.0, < 3.0)
|
131
138
|
multi_json (~> 1.3)
|
132
139
|
multi_xml (~> 0.5)
|
133
140
|
rack (>= 1.2, < 3)
|
134
|
-
omniauth (
|
141
|
+
omniauth (2.0.4)
|
135
142
|
hashie (>= 3.4.6)
|
136
143
|
rack (>= 1.6.2, < 3)
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
144
|
+
rack-protection
|
145
|
+
omniauth-oauth2 (1.7.1)
|
146
|
+
oauth2 (~> 1.4)
|
147
|
+
omniauth (>= 1.9, < 3)
|
148
|
+
omniauth-rails_csrf_protection (1.0.0)
|
149
|
+
actionpack (>= 4.2)
|
150
|
+
omniauth (~> 2.0)
|
151
|
+
omniauth-shopify-oauth2 (2.3.2)
|
141
152
|
activesupport
|
142
|
-
omniauth-oauth2 (~> 1.5
|
153
|
+
omniauth-oauth2 (~> 1.5)
|
143
154
|
parallel (1.20.1)
|
144
155
|
parser (2.7.2.0)
|
145
156
|
ast (~> 2.4.1)
|
@@ -154,22 +165,24 @@ GEM
|
|
154
165
|
public_suffix (4.0.6)
|
155
166
|
racc (1.5.2)
|
156
167
|
rack (2.2.3)
|
168
|
+
rack-protection (2.1.0)
|
169
|
+
rack
|
157
170
|
rack-test (1.1.0)
|
158
171
|
rack (>= 1.0, < 3)
|
159
|
-
rails (6.
|
160
|
-
actioncable (= 6.
|
161
|
-
actionmailbox (= 6.
|
162
|
-
actionmailer (= 6.
|
163
|
-
actionpack (= 6.
|
164
|
-
actiontext (= 6.
|
165
|
-
actionview (= 6.
|
166
|
-
activejob (= 6.
|
167
|
-
activemodel (= 6.
|
168
|
-
activerecord (= 6.
|
169
|
-
activestorage (= 6.
|
170
|
-
activesupport (= 6.
|
171
|
-
bundler (>= 1.
|
172
|
-
railties (= 6.
|
172
|
+
rails (6.1.3.1)
|
173
|
+
actioncable (= 6.1.3.1)
|
174
|
+
actionmailbox (= 6.1.3.1)
|
175
|
+
actionmailer (= 6.1.3.1)
|
176
|
+
actionpack (= 6.1.3.1)
|
177
|
+
actiontext (= 6.1.3.1)
|
178
|
+
actionview (= 6.1.3.1)
|
179
|
+
activejob (= 6.1.3.1)
|
180
|
+
activemodel (= 6.1.3.1)
|
181
|
+
activerecord (= 6.1.3.1)
|
182
|
+
activestorage (= 6.1.3.1)
|
183
|
+
activesupport (= 6.1.3.1)
|
184
|
+
bundler (>= 1.15.0)
|
185
|
+
railties (= 6.1.3.1)
|
173
186
|
sprockets-rails (>= 2.0.0)
|
174
187
|
rails-controller-testing (1.0.5)
|
175
188
|
actionpack (>= 5.0.1.rc1)
|
@@ -180,12 +193,12 @@ GEM
|
|
180
193
|
nokogiri (>= 1.6)
|
181
194
|
rails-html-sanitizer (1.3.0)
|
182
195
|
loofah (~> 2.3)
|
183
|
-
railties (6.
|
184
|
-
actionpack (= 6.
|
185
|
-
activesupport (= 6.
|
196
|
+
railties (6.1.3.1)
|
197
|
+
actionpack (= 6.1.3.1)
|
198
|
+
activesupport (= 6.1.3.1)
|
186
199
|
method_source
|
187
200
|
rake (>= 0.8.7)
|
188
|
-
thor (
|
201
|
+
thor (~> 1.0)
|
189
202
|
rainbow (3.0.0)
|
190
203
|
rake (13.0.3)
|
191
204
|
rb-readline (0.5.5)
|
@@ -208,7 +221,7 @@ GEM
|
|
208
221
|
rubocop (~> 1.4)
|
209
222
|
ruby-progressbar (1.10.1)
|
210
223
|
ruby2_keywords (0.0.4)
|
211
|
-
shopify_api (9.4.
|
224
|
+
shopify_api (9.4.1)
|
212
225
|
activeresource (>= 4.1.0, < 6.0.0)
|
213
226
|
graphql-client
|
214
227
|
rack
|
@@ -221,9 +234,8 @@ GEM
|
|
221
234
|
sprockets (>= 3.0.0)
|
222
235
|
sqlite3 (1.4.2)
|
223
236
|
thor (1.1.0)
|
224
|
-
|
225
|
-
|
226
|
-
thread_safe (~> 0.1)
|
237
|
+
tzinfo (2.0.4)
|
238
|
+
concurrent-ruby (~> 1.0)
|
227
239
|
unicode-display_width (1.7.0)
|
228
240
|
webmock (3.9.1)
|
229
241
|
addressable (>= 2.3.6)
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
[gem]: https://img.shields.io/gem/v/shopify_app.svg
|
6
6
|
[gem_url]: https://rubygems.org/gems/shopify_app
|
7
|
-
[supported_rails_version]: https://img.shields.io/badge/rails-%3C6.
|
7
|
+
[supported_rails_version]: https://img.shields.io/badge/rails-%3C6.2.0-orange
|
8
8
|
|
9
9
|
This gem builds Rails applications that can be embedded in the Shopify Admin.
|
10
10
|
|
@@ -150,7 +150,11 @@ module ShopifyApp
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def authenticate_in_context
|
153
|
-
|
153
|
+
post_redirect_to_auth_shopify
|
154
|
+
end
|
155
|
+
|
156
|
+
def post_redirect_to_auth_shopify
|
157
|
+
render('shopify_app/shared/post_redirect_to_auth_shopify', layout: false)
|
154
158
|
end
|
155
159
|
|
156
160
|
def authenticate_at_top_level
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8" />
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
6
|
+
<base target="_top">
|
7
|
+
<title>Redirecting…</title>
|
8
|
+
<%= javascript_include_tag('shopify_app/post_redirect', crossorigin: 'anonymous', integrity: true) %>
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
<%= form_tag '/auth/shopify', id: 'redirect-form' %>
|
12
|
+
</body>
|
13
|
+
</html>
|
data/config/locales/nl.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
nl:
|
3
3
|
logged_out: Je bent afgemeld
|
4
|
-
could_not_log_in: Kon niet
|
4
|
+
could_not_log_in: Kon niet inloggen bij Shopify-winkel
|
5
5
|
invalid_shop_url: Ongeldig winkeldomein
|
6
6
|
enable_cookies_heading: Schakel cookies in van %{app}
|
7
7
|
enable_cookies_body: Je moet cookies in deze browser handmatig inschakelen om %{app}
|
data/docs/Troubleshooting.md
CHANGED
@@ -1,7 +1,27 @@
|
|
1
|
-
Troubleshooting Shopify App
|
2
|
-
===========
|
1
|
+
# Troubleshooting Shopify App
|
3
2
|
|
4
|
-
|
3
|
+
#### Table of contents
|
4
|
+
|
5
|
+
[Generators](#generators)
|
6
|
+
* [The `shopify_app:install` generator hangs](#the-shopifyappinstall-generator-hangs)
|
7
|
+
|
8
|
+
[Rails](#rails)
|
9
|
+
* [Known issues with Rails `v6.1`](#known-issues-with-rails-v61)
|
10
|
+
|
11
|
+
[App installation](#app-installation)
|
12
|
+
* [My app won't install](#my-app-wont-install)
|
13
|
+
* [My app keeps redirecting to login](#my-app-keeps-redirecting-to-login)
|
14
|
+
* [My app returns 401 during oauth](#my-app-returns-401-during-oauth)
|
15
|
+
|
16
|
+
[JWT session tokens](#jwt-session-tokens)
|
17
|
+
* [My app is still using cookies to authenticate](#my-app-is-still-using-cookies-to-authenticate)
|
18
|
+
* [My app can't make requests to the Shopify API](#my-app-cant-make-requests-to-the-shopify-api)
|
19
|
+
|
20
|
+
[Migrating to App Bridge 2.0](#migrating-to-app-bridge-2.0)
|
21
|
+
|
22
|
+
## Generators
|
23
|
+
|
24
|
+
### The shopify_app:install generator hangs
|
5
25
|
|
6
26
|
Rails uses spring by default to speed up development. To run the generator, spring has to be stopped:
|
7
27
|
|
@@ -11,6 +31,129 @@ $ bundle exec spring stop
|
|
11
31
|
|
12
32
|
Run shopify_app generator again.
|
13
33
|
|
14
|
-
|
34
|
+
## Rails
|
35
|
+
|
36
|
+
### Known issues with Rails `v6.1`
|
37
|
+
|
38
|
+
If you recently upgraded your application's `Rails::Application` configuration to load the default configuration for Rails `v6.1`, then you will need to update the following `cookies_same_site_protection` ActionDispatch configuration.
|
39
|
+
|
40
|
+
```diff
|
41
|
+
# config/application.rb
|
42
|
+
|
43
|
+
require_relative 'boot'
|
44
|
+
|
45
|
+
require 'rails/all'
|
46
|
+
|
47
|
+
Bundler.require(*Rails.groups)
|
48
|
+
|
49
|
+
module AppName
|
50
|
+
class Application < Rails::Application
|
51
|
+
+ config.load_defaults 6.1
|
52
|
+
|
53
|
+
+ config.action_dispatch.cookies_same_site_protection = :none
|
54
|
+
...
|
55
|
+
end
|
56
|
+
end
|
57
|
+
```
|
58
|
+
|
59
|
+
As of Rails `v6.1`, the same-site cookie protection setting defaults to `Lax`. This does not allow an embedded app to make cross-domain requests in the Shopify Admin.
|
60
|
+
|
61
|
+
Alternatively, you can upgrade to [`v17.2.0` of the shopify_app gem](/docs/Upgrading.md#upgrading-to-v1720).
|
62
|
+
|
63
|
+
## App installation
|
64
|
+
|
65
|
+
### My app won't install
|
66
|
+
|
67
|
+
#### App installation fails with 'The page you’re looking for could not be found' if the app was installed before
|
15
68
|
|
16
69
|
This issue can occur when the session (the model you set as `ShopifyApp::SessionRepository.storage`) isn't deleted when the user uninstalls your app. A possible fix for this is listening to the `app/uninstalled` webhook and deleting the corresponding session in the webhook handler.
|
70
|
+
|
71
|
+
### My app returns 401 during oauth
|
72
|
+
|
73
|
+
If your local dev env uses the `cookie_store` session storage strategy, you may encounter 401 errors during oauth due to a race condition between asset requests and `/auth/shopify`. You should be able to work around for local testing by using a different browser or session storage strategy. [Read more about the status of this issue](https://github.com/Shopify/shopify_app/issues/1269).
|
74
|
+
|
75
|
+
## JWT session tokens
|
76
|
+
|
77
|
+
### My app is still using cookies to authenticate
|
78
|
+
|
79
|
+
#### `shopify_app` gem version
|
80
|
+
|
81
|
+
Ensure the app is using shopify_app gem v13.x.x+. See [*Upgrading to `v13.0.0`*](/docs/Upgrading.md#upgrading-to-v1300).
|
82
|
+
|
83
|
+
#### `shopify_app` gem Rails configuration
|
84
|
+
|
85
|
+
Edit `config/initializer/shopify_app.rb` and ensure the following configurations are set:
|
86
|
+
|
87
|
+
```diff
|
88
|
+
+ config.embedded_app = true
|
89
|
+
|
90
|
+
+ config.allow_jwt_authentication = true
|
91
|
+
+ config.allow_cookie_authentication = false
|
92
|
+
|
93
|
+
# This line should already exist if you're using shopify_app gem 13.x.x+
|
94
|
+
+ config.shop_session_repository = 'Shop'
|
95
|
+
```
|
96
|
+
|
97
|
+
#### Inspect server logs
|
98
|
+
|
99
|
+
If you have checked the configurations above, and the app is still using cookies, then it is possible that the `shopify_app` gem defaulted to relying on cookies. This would happen when your browser allows third-party cookies and a session token was not successfully found as part of your request.
|
100
|
+
|
101
|
+
In this case, check the server logs to see if the session token was invalid:
|
102
|
+
|
103
|
+
```los
|
104
|
+
[ShopifyApp::JWT] Failed to validate JWT: [JWT::<Error>] <Failure message>
|
105
|
+
```
|
106
|
+
|
107
|
+
*Example*
|
108
|
+
|
109
|
+
```
|
110
|
+
[ShopifyApp::JWT] Failed to validate JWT: [JWT::ImmatureSignature] Signature nbf has not been reached
|
111
|
+
```
|
112
|
+
|
113
|
+
**Note:** In a local development environment, you may want to temporarily update your `Gemfile` to point to a local instance of the `shopify_app` library instad of an installed gem. This will enable you to use a debugging tool like `byebug` to debug the library.
|
114
|
+
|
115
|
+
```diff
|
116
|
+
- gem 'shopify_app', '~> 14.2'
|
117
|
+
+ gem 'shopify_app', path: '/path/to/shopify_app'
|
118
|
+
```
|
119
|
+
|
120
|
+
### My app can't make requests to the Shopify API
|
121
|
+
|
122
|
+
> **Note:** Session tokens cannot be used to make authenticated requests to the Shopify API. Learn more about authenticating your backend requests to Shopify APIs at [Shopify API authentication](https://shopify.dev/concepts/about-apis/authentication).
|
123
|
+
|
124
|
+
#### The Shopify API returns `401 Unauthorized`
|
125
|
+
|
126
|
+
If your app uses [user-based token storage](/docs/shopify_app/session-repository.md#user-based-token-storage), then your app is configured to use **online** access tokens (see [API access modes](https://shopify.dev/concepts/about-apis/authentication#api-access-modes) to learn the difference between "online" and "offline" access tokens ). Unlike offline access tokens, online access tokens expire daily and cannot be used to make authenticated requests to the Shopify API once they expire.
|
127
|
+
|
128
|
+
Converting your app to use session tokens means that your app will most likely not go through the OAuth flow as often as it did when relying on cookie sessions. Since the online access tokens stored in your app's database are refreshed during OAuth, this may cause your app's user session repository to use expired online access tokens.
|
129
|
+
|
130
|
+
If the Shopify API returns `401 Unauthorized`, handle this error on your app by redirecting the user to your login path to start the OAuth flow. As a result, your app will be given a new online access token for the current user.
|
131
|
+
|
132
|
+
> **Note:** The following are examples to common app configurations. Your specific use-case may differ.
|
133
|
+
|
134
|
+
##### Example solution
|
135
|
+
|
136
|
+
Add the following line to your app's unauthorized response handler:
|
137
|
+
|
138
|
+
```diff
|
139
|
+
+ redirect_to(ShopifyApp.configuration.login_url, shop: current_shopify_domain)
|
140
|
+
```
|
141
|
+
|
142
|
+
_Example:_ If your embedded app cannot handle server-side XHR redirects, then configure your app's unauthorized response handler to set a response header:
|
143
|
+
|
144
|
+
```
|
145
|
+
X-Shopify-API-Request-Failure-Unauthorized: true
|
146
|
+
```
|
147
|
+
|
148
|
+
Then, use the [Shopify App Bridge Redirect](https://shopify.dev/tools/app-bridge/actions/navigation/redirect) action to redirect your app frontend to the app login URL if this header is set.
|
149
|
+
|
150
|
+
## Migrating to App Bridge 2.0
|
151
|
+
|
152
|
+
In order to upgrade your embedded app to the latest App Bridge 2.0 version, please refer to the [migration guide](https://shopify.dev/tutorials/migrate-your-app-to-app-bridge-2).
|
153
|
+
|
154
|
+
To ensure that your app's embedded layout doesn't import App Bridge 2.0 before fully migrating, make the following change to bind it to v1.x.
|
155
|
+
|
156
|
+
```diff
|
157
|
+
- <script src="https://unpkg.com/@shopify/app-bridge"></script>
|
158
|
+
+ <script src="https://unpkg.com/@shopify/app-bridge@1"></script>
|
159
|
+
```
|
data/docs/Upgrading.md
CHANGED
@@ -4,12 +4,28 @@ This file documents important changes needed to upgrade your app's Shopify App v
|
|
4
4
|
|
5
5
|
#### Table of contents
|
6
6
|
|
7
|
+
[Upgrading to `v17.2.0`](#upgrading-to-v1720)
|
8
|
+
|
7
9
|
[Upgrading to `v13.0.0`](#upgrading-to-v1300)
|
8
10
|
|
9
11
|
[Upgrading to `v11.7.0`](#upgrading-to-v1170)
|
10
12
|
|
11
13
|
[Upgrading from `v8.6` to `v9.0.0`](#upgrading-from-v86-to-v900)
|
12
14
|
|
15
|
+
## Upgrading to `v17.2.0`
|
16
|
+
|
17
|
+
### Different SameSite cookie attribute behaviour
|
18
|
+
|
19
|
+
To support Rails `v6.1`, the [`SameSiteCookieMiddleware`](/lib/shopify_app/middleware/same_site_cookie_middleware.rb) was updated to configure cookies to `SameSite=None` if the app is embedded. Before this release, cookies were configured to `SameSite=None` only if this attribute had not previously been set before.
|
20
|
+
|
21
|
+
```diff
|
22
|
+
# same_site_cookie_middleware.rb
|
23
|
+
- cookie << '; SameSite=None' unless cookie =~ /;\s*samesite=/i
|
24
|
+
+ cookie << '; SameSite=None' if ShopifyApp.configuration.embedded_app?
|
25
|
+
```
|
26
|
+
|
27
|
+
By default, Rails `v6.1` configures `SameSite=Lax` on all cookies that don't specify this attribute.
|
28
|
+
|
13
29
|
## Upgrading to `v13.0.0`
|
14
30
|
|
15
31
|
Version 13.0.0 adds the ability to use both user and shop sessions, concurrently. This however involved a large
|
@@ -1,8 +1,14 @@
|
|
1
1
|
# Handling changes in access scopes
|
2
|
-
The Shopify App gem provides handling changes to scopes for both shop/offline and user/online tokens. To enable your app to login via OAuth on scope changes, you can set the following configuration flag
|
2
|
+
The Shopify App gem provides handling changes to scopes for both shop/offline and user/online tokens. To enable your app to login via OAuth on scope changes, you can set the following configuration flag in your `config/initializers/shopify_app.rb`:
|
3
3
|
```ruby
|
4
|
-
|
4
|
+
config.reauth_on_access_scope_changes = true
|
5
5
|
```
|
6
6
|
|
7
7
|
## ShopAccessScopesVerification
|
8
8
|
The `ShopifyApp::ShopAccessScopesVerification` concern helps merchants grant new access scopes requested by the app. The concern compares the current access scopes granted by the shop and compares them with the scopes requested by the app. If there is a mismatch in configuration, the merchant is redirected to login via OAuth and grant the net new scopes.
|
9
|
+
|
10
|
+
To activate the `ShopAccessScopesVerification` for a controller add `include ShopifyApp::ShopAccessScopesVerification`:
|
11
|
+
```ruby
|
12
|
+
class HomeController < AuthenticatedController
|
13
|
+
include ShopifyApp::ShopAccessScopesVerification
|
14
|
+
```
|
@@ -78,7 +78,7 @@ end
|
|
78
78
|
provider :shopify,
|
79
79
|
...
|
80
80
|
setup: lambda { |env|
|
81
|
-
configuration = ShopifyApp::
|
81
|
+
configuration = ShopifyApp::OmniAuthConfiguration.new(env['omniauth.strategy'], Rack::Request.new(env))
|
82
82
|
configuration.build_options
|
83
83
|
}
|
84
84
|
|
@@ -3,8 +3,16 @@
|
|
3
3
|
class HomeController < AuthenticatedController
|
4
4
|
include ShopifyApp::ShopAccessScopesVerification
|
5
5
|
|
6
|
+
before_action :set_host
|
7
|
+
|
6
8
|
def index
|
7
9
|
@products = ShopifyAPI::Product.find(:all, params: { limit: 10 })
|
8
10
|
@webhooks = ShopifyAPI::Webhook.find(:all)
|
9
11
|
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def set_host
|
16
|
+
@host = params[:host]
|
17
|
+
end
|
10
18
|
end
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
// Save a session token for future requests
|
20
20
|
window.sessionToken = await new Promise((resolve) => {
|
21
|
-
app.subscribe(SessionToken.
|
21
|
+
app.subscribe(SessionToken.Action.RESPOND, (data) => {
|
22
22
|
resolve(data.sessionToken || "");
|
23
23
|
});
|
24
24
|
});
|
@@ -24,11 +24,12 @@
|
|
24
24
|
|
25
25
|
<%= render 'layouts/flash_messages' %>
|
26
26
|
|
27
|
-
<script src="https://unpkg.com/@shopify/app-bridge"></script>
|
27
|
+
<script src="https://unpkg.com/@shopify/app-bridge@2"></script>
|
28
28
|
|
29
29
|
<%= content_tag(:div, nil, id: 'shopify-app-init', data: {
|
30
30
|
api_key: ShopifyApp.configuration.api_key,
|
31
31
|
shop_origin: @shop_origin || (@current_shopify_session.domain if @current_shopify_session),
|
32
|
+
host: @host,
|
32
33
|
debug: Rails.env.development?
|
33
34
|
} ) %>
|
34
35
|
|
data/lib/shopify_app.rb
CHANGED
@@ -9,6 +9,8 @@ module ShopifyApp
|
|
9
9
|
|
10
10
|
class ShopifyDomainNotFound < StandardError; end
|
11
11
|
|
12
|
+
class ShopifyHostNotFound < StandardError; end
|
13
|
+
|
12
14
|
included do
|
13
15
|
after_action :set_test_cookie
|
14
16
|
rescue_from ActiveResource::UnauthorizedAccess, with: :close_session
|
@@ -103,6 +105,12 @@ module ShopifyApp
|
|
103
105
|
request.env['jwt.shopify_user_id']
|
104
106
|
end
|
105
107
|
|
108
|
+
def host
|
109
|
+
return params[:host] if params[:host].present?
|
110
|
+
|
111
|
+
raise ShopifyHostNotFound
|
112
|
+
end
|
113
|
+
|
106
114
|
def redirect_to_login
|
107
115
|
if request.xhr?
|
108
116
|
head(:unauthorized)
|
@@ -215,9 +223,8 @@ module ShopifyApp
|
|
215
223
|
end
|
216
224
|
|
217
225
|
def return_address
|
218
|
-
|
219
|
-
|
220
|
-
rescue ShopifyDomainNotFound
|
226
|
+
return_address_with_params(shop: current_shopify_domain, host: host)
|
227
|
+
rescue ShopifyDomainNotFound, ShopifyHostNotFound
|
221
228
|
base_return_address
|
222
229
|
end
|
223
230
|
|
data/lib/shopify_app/engine.rb
CHANGED
@@ -17,6 +17,7 @@ module ShopifyApp
|
|
17
17
|
initializer "shopify_app.assets.precompile" do |app|
|
18
18
|
app.config.assets.precompile += %w[
|
19
19
|
shopify_app/redirect.js
|
20
|
+
shopify_app/post_redirect.js
|
20
21
|
shopify_app/top_level.js
|
21
22
|
shopify_app/enable_cookies.js
|
22
23
|
shopify_app/request_storage_access.js
|
@@ -21,7 +21,7 @@ module ShopifyApp
|
|
21
21
|
.compact
|
22
22
|
.map do |cookie|
|
23
23
|
cookie << '; Secure' unless cookie =~ /;\s*secure/i
|
24
|
-
cookie << '; SameSite=None'
|
24
|
+
cookie << '; SameSite=None' if ShopifyApp.configuration.embedded_app?
|
25
25
|
cookie
|
26
26
|
end
|
27
27
|
|
data/lib/shopify_app/version.rb
CHANGED
data/package.json
CHANGED
data/service.yml
CHANGED
data/shopify_app.gemspec
CHANGED
@@ -14,10 +14,11 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.metadata['allowed_push_host'] = 'https://rubygems.org'
|
15
15
|
|
16
16
|
s.add_runtime_dependency('browser_sniffer', '~> 1.2.2')
|
17
|
-
s.add_runtime_dependency('
|
17
|
+
s.add_runtime_dependency('omniauth-rails_csrf_protection')
|
18
|
+
s.add_runtime_dependency('rails', '> 5.2.1', '< 6.2')
|
18
19
|
s.add_runtime_dependency('shopify_api', '~> 9.4')
|
19
|
-
s.add_runtime_dependency('omniauth-shopify-oauth2', '~> 2.
|
20
|
-
s.add_runtime_dependency('jwt', '
|
20
|
+
s.add_runtime_dependency('omniauth-shopify-oauth2', '~> 2.3')
|
21
|
+
s.add_runtime_dependency('jwt', '>= 2.2.3')
|
21
22
|
s.add_runtime_dependency('redirect_safely', '~> 1.0')
|
22
23
|
|
23
24
|
s.add_development_dependency('rake')
|
data/yarn.lock
CHANGED
@@ -1474,10 +1474,10 @@ bluebird@^3.5.5:
|
|
1474
1474
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
|
1475
1475
|
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
|
1476
1476
|
|
1477
|
-
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.
|
1478
|
-
version "4.
|
1479
|
-
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.
|
1480
|
-
integrity sha512-
|
1477
|
+
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
|
1478
|
+
version "4.12.0"
|
1479
|
+
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
|
1480
|
+
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
|
1481
1481
|
|
1482
1482
|
bn.js@^5.1.1:
|
1483
1483
|
version "5.1.3"
|
@@ -1531,7 +1531,7 @@ braces@^3.0.2, braces@~3.0.2:
|
|
1531
1531
|
dependencies:
|
1532
1532
|
fill-range "^7.0.1"
|
1533
1533
|
|
1534
|
-
brorand@^1.0.1:
|
1534
|
+
brorand@^1.0.1, brorand@^1.1.0:
|
1535
1535
|
version "1.1.0"
|
1536
1536
|
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
|
1537
1537
|
integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
|
@@ -2180,17 +2180,17 @@ electron-to-chromium@^1.3.562:
|
|
2180
2180
|
integrity sha512-fNaYN3EtKQWLQsrKXui8mzcryJXuA0LbCLoizeX6oayG2emBaS5MauKjCPAvc29NEY4FpLHIUWiP+Y0Bfrs5dg==
|
2181
2181
|
|
2182
2182
|
elliptic@^6.5.3:
|
2183
|
-
version "6.5.
|
2184
|
-
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.
|
2185
|
-
integrity sha512-
|
2183
|
+
version "6.5.4"
|
2184
|
+
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
|
2185
|
+
integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
|
2186
2186
|
dependencies:
|
2187
|
-
bn.js "^4.
|
2188
|
-
brorand "^1.0
|
2187
|
+
bn.js "^4.11.9"
|
2188
|
+
brorand "^1.1.0"
|
2189
2189
|
hash.js "^1.0.0"
|
2190
|
-
hmac-drbg "^1.0.
|
2191
|
-
inherits "^2.0.
|
2192
|
-
minimalistic-assert "^1.0.
|
2193
|
-
minimalistic-crypto-utils "^1.0.
|
2190
|
+
hmac-drbg "^1.0.1"
|
2191
|
+
inherits "^2.0.4"
|
2192
|
+
minimalistic-assert "^1.0.1"
|
2193
|
+
minimalistic-crypto-utils "^1.0.1"
|
2194
2194
|
|
2195
2195
|
emoji-regex@^7.0.1:
|
2196
2196
|
version "7.0.3"
|
@@ -2782,7 +2782,7 @@ he@1.2.0:
|
|
2782
2782
|
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
2783
2783
|
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
|
2784
2784
|
|
2785
|
-
hmac-drbg@^1.0.
|
2785
|
+
hmac-drbg@^1.0.1:
|
2786
2786
|
version "1.0.1"
|
2787
2787
|
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
|
2788
2788
|
integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
|
@@ -3492,7 +3492,7 @@ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
|
|
3492
3492
|
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
|
3493
3493
|
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
|
3494
3494
|
|
3495
|
-
minimalistic-crypto-utils@^1.0.
|
3495
|
+
minimalistic-crypto-utils@^1.0.1:
|
3496
3496
|
version "1.0.1"
|
3497
3497
|
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
3498
3498
|
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
|
@@ -4519,9 +4519,9 @@ sprintf-js@~1.0.2:
|
|
4519
4519
|
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
|
4520
4520
|
|
4521
4521
|
ssri@^6.0.1:
|
4522
|
-
version "6.0.
|
4523
|
-
resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.
|
4524
|
-
integrity sha512-
|
4522
|
+
version "6.0.2"
|
4523
|
+
resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5"
|
4524
|
+
integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==
|
4525
4525
|
dependencies:
|
4526
4526
|
figgy-pudding "^3.5.1"
|
4527
4527
|
|
@@ -5115,9 +5115,9 @@ xtend@^4.0.0, xtend@~4.0.1:
|
|
5115
5115
|
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
|
5116
5116
|
|
5117
5117
|
y18n@^4.0.0:
|
5118
|
-
version "4.0.
|
5119
|
-
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.
|
5120
|
-
integrity sha512-
|
5118
|
+
version "4.0.3"
|
5119
|
+
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
|
5120
|
+
integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
|
5121
5121
|
|
5122
5122
|
yallist@^3.0.2:
|
5123
5123
|
version "3.1.1"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shopify_app
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 18.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shopify
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: browser_sniffer
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.2.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: omniauth-rails_csrf_protection
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rails
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -33,7 +47,7 @@ dependencies:
|
|
33
47
|
version: 5.2.1
|
34
48
|
- - "<"
|
35
49
|
- !ruby/object:Gem::Version
|
36
|
-
version: '6.
|
50
|
+
version: '6.2'
|
37
51
|
type: :runtime
|
38
52
|
prerelease: false
|
39
53
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -43,7 +57,7 @@ dependencies:
|
|
43
57
|
version: 5.2.1
|
44
58
|
- - "<"
|
45
59
|
- !ruby/object:Gem::Version
|
46
|
-
version: '6.
|
60
|
+
version: '6.2'
|
47
61
|
- !ruby/object:Gem::Dependency
|
48
62
|
name: shopify_api
|
49
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -64,28 +78,28 @@ dependencies:
|
|
64
78
|
requirements:
|
65
79
|
- - "~>"
|
66
80
|
- !ruby/object:Gem::Version
|
67
|
-
version: 2.
|
81
|
+
version: '2.3'
|
68
82
|
type: :runtime
|
69
83
|
prerelease: false
|
70
84
|
version_requirements: !ruby/object:Gem::Requirement
|
71
85
|
requirements:
|
72
86
|
- - "~>"
|
73
87
|
- !ruby/object:Gem::Version
|
74
|
-
version: 2.
|
88
|
+
version: '2.3'
|
75
89
|
- !ruby/object:Gem::Dependency
|
76
90
|
name: jwt
|
77
91
|
requirement: !ruby/object:Gem::Requirement
|
78
92
|
requirements:
|
79
|
-
- - "
|
93
|
+
- - ">="
|
80
94
|
- !ruby/object:Gem::Version
|
81
|
-
version: 2.2.
|
95
|
+
version: 2.2.3
|
82
96
|
type: :runtime
|
83
97
|
prerelease: false
|
84
98
|
version_requirements: !ruby/object:Gem::Requirement
|
85
99
|
requirements:
|
86
|
-
- - "
|
100
|
+
- - ">="
|
87
101
|
- !ruby/object:Gem::Version
|
88
|
-
version: 2.2.
|
102
|
+
version: 2.2.3
|
89
103
|
- !ruby/object:Gem::Dependency
|
90
104
|
name: redirect_safely
|
91
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -272,6 +286,7 @@ files:
|
|
272
286
|
- app/assets/javascripts/shopify_app/enable_cookies.js
|
273
287
|
- app/assets/javascripts/shopify_app/itp_helper.js
|
274
288
|
- app/assets/javascripts/shopify_app/partition_cookies.js
|
289
|
+
- app/assets/javascripts/shopify_app/post_redirect.js
|
275
290
|
- app/assets/javascripts/shopify_app/redirect.js
|
276
291
|
- app/assets/javascripts/shopify_app/request_storage_access.js
|
277
292
|
- app/assets/javascripts/shopify_app/storage_access.js
|
@@ -297,6 +312,7 @@ files:
|
|
297
312
|
- app/views/shopify_app/sessions/new.html.erb
|
298
313
|
- app/views/shopify_app/sessions/request_storage_access.html.erb
|
299
314
|
- app/views/shopify_app/sessions/top_level_interaction.html.erb
|
315
|
+
- app/views/shopify_app/shared/post_redirect_to_auth_shopify.html.erb
|
300
316
|
- app/views/shopify_app/shared/redirect.html.erb
|
301
317
|
- config/locales/cs.yml
|
302
318
|
- config/locales/da.yml
|