shopify_app 21.4.1 → 21.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +3 -3
  3. data/.github/workflows/release.yml +1 -1
  4. data/.github/workflows/remove-labels-on-activity.yml +1 -1
  5. data/.github/workflows/rubocop.yml +1 -1
  6. data/.github/workflows/stale.yml +22 -11
  7. data/.ruby-version +1 -1
  8. data/CHANGELOG.md +9 -0
  9. data/Gemfile.lock +113 -108
  10. data/app/controllers/concerns/shopify_app/authenticated.rb +5 -2
  11. data/app/controllers/concerns/shopify_app/require_known_shop.rb +5 -2
  12. data/docs/shopify_app/session-repository.md +1 -1
  13. data/lib/generators/shopify_app/add_after_authenticate_job/add_after_authenticate_job_generator.rb +5 -2
  14. data/lib/generators/shopify_app/add_after_authenticate_job/templates/after_authenticate_job.rb +1 -1
  15. data/lib/generators/shopify_app/add_webhook/templates/webhook_job.rb.tt +2 -2
  16. data/lib/generators/shopify_app/install/install_generator.rb +2 -2
  17. data/lib/generators/shopify_app/shop_model/templates/db/migrate/add_shop_access_scopes_column.erb +1 -1
  18. data/lib/generators/shopify_app/user_model/templates/db/migrate/add_user_access_scopes_column.erb +1 -1
  19. data/lib/shopify_app/access_scopes/user_strategy.rb +4 -2
  20. data/lib/shopify_app/controller_concerns/ensure_billing.rb +6 -4
  21. data/lib/shopify_app/controller_concerns/login_protection.rb +5 -2
  22. data/lib/shopify_app/engine.rb +8 -3
  23. data/lib/shopify_app/managers/webhooks_manager.rb +5 -5
  24. data/lib/shopify_app/session/session_repository.rb +4 -4
  25. data/lib/shopify_app/session/session_storage.rb +2 -2
  26. data/lib/shopify_app/utils.rb +11 -1
  27. data/lib/shopify_app/version.rb +1 -1
  28. data/service.yml +0 -2
  29. data/shopify_app.gemspec +1 -1
  30. data/translation.yml +1 -0
  31. data/yarn.lock +15 -15
  32. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e65d60a59d8ea51db704069c1d982e4c527339768f7c4e759e50a23ebe4fdb09
4
- data.tar.gz: b5aff8a08f5c91093d3114ff7bc88b43894b5be2e6011a3cdc28a7dc3ab670c6
3
+ metadata.gz: '029b36852c1c017c7e96570b5e90aca34f2471bd9b56699c1bc1d4ef6f6996a8'
4
+ data.tar.gz: '01239772e056908581b57f0cc93dc3b867fa14447887865c19b09e7b6fae08bf'
5
5
  SHA512:
6
- metadata.gz: 157fd8fe0c4ec1cb541cbbd1816ce4f950d4bde8cb5f71e37400fcf251de1928cc0954b28cfe2e9bf67d403b0746b0570a47b3891566df2eb2188c82ccf9de9f
7
- data.tar.gz: 7025fa973e9e89e0b1ef93713fa6e831a33e401043b6627745617f51a6fe007673307911e5b72cabedd82a6cfc5cbbcdfdc00525b560728d6aff1fac7064147c
6
+ metadata.gz: 10cdbfa6bef394875c1d5bd518f62862c289bce52f835af22dae3c3c3f64d91629008e012cf10e7e1dd83fff70664fd01cc070dd90672e99f88bde9e529aba03
7
+ data.tar.gz: e38068aca0100e029f26695c5558c698ebff02fb7a4189b217a7b8e38902d4a8d38564f4a8eabba4d959bf55677e54822444937d43da2251e88f9334c3dc2a85
@@ -12,12 +12,12 @@ jobs:
12
12
  name: Ruby ${{ matrix.version }}
13
13
  strategy:
14
14
  matrix:
15
- version: ['2.7', '3.0']
15
+ version: ['2.7', '3.0', '3.1', '3.2']
16
16
 
17
17
  steps:
18
- - uses: actions/checkout@v2
18
+ - uses: actions/checkout@v3
19
19
  - name: Cache node modules
20
- uses: actions/cache@v2
20
+ uses: actions/cache@v3
21
21
  with:
22
22
  # npm cache files are stored in `~/.npm` on Linux/macOS
23
23
  path: ~/.npm
@@ -12,7 +12,7 @@ jobs:
12
12
  - name: Extract tag name
13
13
  id: tag
14
14
  run: echo "::set-output name=value::${GITHUB_REF##*/}"
15
- - uses: actions/checkout@v2
15
+ - uses: actions/checkout@v3
16
16
 
17
17
  - name: Create Release
18
18
  id: create_release
@@ -7,7 +7,7 @@ jobs:
7
7
  remove-labels-on-activity:
8
8
  runs-on: ubuntu-latest
9
9
  steps:
10
- - uses: actions/checkout@v2
10
+ - uses: actions/checkout@v3
11
11
  - uses: actions-ecosystem/action-remove-labels@v1
12
12
  if: contains(github.event.issue.labels.*.name, 'Waiting for Response')
13
13
  with:
@@ -7,7 +7,7 @@ jobs:
7
7
  runs-on: ubuntu-latest
8
8
 
9
9
  steps:
10
- - uses: actions/checkout@v2
10
+ - uses: actions/checkout@v3
11
11
  - name: Set up Ruby 2.7
12
12
  uses: ruby/setup-ruby@v1
13
13
  with:
@@ -1,32 +1,43 @@
1
- name: Close inactive issues
1
+ name: Close inactive issues / prs
2
2
  on:
3
3
  schedule:
4
4
  - cron: "30 1 * * *"
5
5
 
6
6
  jobs:
7
- close-issues:
7
+ stale:
8
8
  runs-on: ubuntu-latest
9
9
  permissions:
10
10
  issues: write
11
11
  pull-requests: write
12
12
  steps:
13
- - uses: actions/stale@v5
13
+ - uses: actions/stale@v7
14
14
  with:
15
- days-before-issue-stale: 90
15
+ days-before-issue-stale: 60
16
16
  days-before-issue-close: 14
17
+ days-before-pr-stale: 60
18
+ days-before-pr-close: 14
19
+ operations-per-run: 1000
17
20
  stale-issue-label: "Stale"
21
+ stale-pr-label: "Stale"
18
22
  stale-issue-message: >
19
- This issue is stale because it has been open for 90 days with no activity. It will be closed if no further action occurs in 14 days.
23
+ This issue is stale because it has been open for 60 days with no activity. It will be closed if no further action occurs in 14 days.
20
24
  close-issue-message: |
21
- We are closing this issue because it has been inactive for a few months.
22
- This probably means that it is not reproducible or it has been fixed in a newer version.
25
+ We are closing this issue because it has been inactive for a few months.
26
+ This probably means that it is not reproducible or it has been fixed in a newer version.
23
27
  If it’s an enhancement and hasn’t been taken on since it was submitted, then it seems other issues have taken priority.
24
28
 
25
29
  If you still encounter this issue with the latest stable version, please reopen using the issue template. You can also contribute directly by submitting a pull request– see the [CONTRIBUTING.md](https://github.com/Shopify/shopify_app/blob/main/CONTRIBUTING.md) file for guidelines
26
30
 
27
31
  Thank you!
28
- days-before-pr-stale: -1
29
- days-before-pr-close: -1
30
- repo-token: ${{ secrets.GITHUB_TOKEN }}
31
- exempt-issue-labels: "feature request"
32
+ stale-pr-message: >
33
+ This pull request is stale because it has been open for 60 days with no activity. It will be closed if no further action occurs in 14 days.
34
+ close-pr-message: |
35
+ We are closing this pull request because it has been inactive for a few months.
36
+ This probably means that it is not reproducible or it has been fixed in a newer version.
37
+ If it’s an enhancement and hasn’t been taken on since it was submitted, then it seems other issues have taken priority.
38
+
39
+ If you still encounter this pull request with the latest stable version, please reopen using the pull request template. You can also contribute directly by submitting a pull request– see the [CONTRIBUTING.md](https://github.com/Shopify/shopify_app/blob/main/CONTRIBUTING.md) file for guidelines
40
+
41
+ Thank you!
42
+ repo-token: ${{ github.token }}
32
43
  close-issue-reason: "not_planned"
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.0.3
1
+ 3.2.2
data/CHANGELOG.md CHANGED
@@ -1,6 +1,15 @@
1
1
  Unreleased
2
2
  ----------
3
3
 
4
+ 21.5.0 (May 18, 2023)
5
+ ----------
6
+ * Support Unified Admin [#1658](https://github.com/Shopify/shopify_app/pull/1658)
7
+ * Set `access_scopes` column to string by default [#1636](https://github.com/Shopify/shopify_app/pull/1636)
8
+ * Fixes a bug with `EnsureBilling` causing infinite redirect in embedded apps [#1578](https://github.com/Shopify/shopify_app/pull/1578)
9
+ * Modifies SessionStorage#with_shopify_session to call a block with a supplied session instance [#1488](https://github.com/Shopify/shopify_app/pull/1488)
10
+ * Refactors `ShopifyApp::WebhhooksManager#recreate_webhooks!` to have a uniform webhook inventory that doesn't clash with the API library. Updates webhook generator to use supplied session. [#1686](https://github.com/Shopify/shopify_app/pull/1686)
11
+ * No longer use session repository from API library[#1689](https://github.com/Shopify/shopify_app/pull/1689)
12
+
4
13
  21.4.1 (Feb 21, 2023)
5
14
  ----------
6
15
  * Fixed bug where authentication redirect could still happen even though `reauth_on_access_scope_changes` is set to `false` [#1639](https://github.com/Shopify/shopify_app/pull/1639)
data/Gemfile.lock CHANGED
@@ -1,87 +1,87 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shopify_app (21.4.1)
4
+ shopify_app (21.5.0)
5
5
  activeresource
6
6
  addressable (~> 2.7)
7
7
  browser_sniffer (~> 2.0)
8
8
  jwt (>= 2.2.3)
9
9
  rails (> 5.2.1)
10
10
  redirect_safely (~> 1.0)
11
- shopify_api (~> 12.4)
11
+ shopify_api (~> 13.0)
12
12
  sprockets-rails (>= 2.0.0)
13
13
 
14
14
  GEM
15
15
  remote: https://rubygems.org/
16
16
  specs:
17
- actioncable (6.1.7)
18
- actionpack (= 6.1.7)
19
- activesupport (= 6.1.7)
17
+ actioncable (6.1.7.3)
18
+ actionpack (= 6.1.7.3)
19
+ activesupport (= 6.1.7.3)
20
20
  nio4r (~> 2.0)
21
21
  websocket-driver (>= 0.6.1)
22
- actionmailbox (6.1.7)
23
- actionpack (= 6.1.7)
24
- activejob (= 6.1.7)
25
- activerecord (= 6.1.7)
26
- activestorage (= 6.1.7)
27
- activesupport (= 6.1.7)
22
+ actionmailbox (6.1.7.3)
23
+ actionpack (= 6.1.7.3)
24
+ activejob (= 6.1.7.3)
25
+ activerecord (= 6.1.7.3)
26
+ activestorage (= 6.1.7.3)
27
+ activesupport (= 6.1.7.3)
28
28
  mail (>= 2.7.1)
29
- actionmailer (6.1.7)
30
- actionpack (= 6.1.7)
31
- actionview (= 6.1.7)
32
- activejob (= 6.1.7)
33
- activesupport (= 6.1.7)
29
+ actionmailer (6.1.7.3)
30
+ actionpack (= 6.1.7.3)
31
+ actionview (= 6.1.7.3)
32
+ activejob (= 6.1.7.3)
33
+ activesupport (= 6.1.7.3)
34
34
  mail (~> 2.5, >= 2.5.4)
35
35
  rails-dom-testing (~> 2.0)
36
- actionpack (6.1.7)
37
- actionview (= 6.1.7)
38
- activesupport (= 6.1.7)
36
+ actionpack (6.1.7.3)
37
+ actionview (= 6.1.7.3)
38
+ activesupport (= 6.1.7.3)
39
39
  rack (~> 2.0, >= 2.0.9)
40
40
  rack-test (>= 0.6.3)
41
41
  rails-dom-testing (~> 2.0)
42
42
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
43
- actiontext (6.1.7)
44
- actionpack (= 6.1.7)
45
- activerecord (= 6.1.7)
46
- activestorage (= 6.1.7)
47
- activesupport (= 6.1.7)
43
+ actiontext (6.1.7.3)
44
+ actionpack (= 6.1.7.3)
45
+ activerecord (= 6.1.7.3)
46
+ activestorage (= 6.1.7.3)
47
+ activesupport (= 6.1.7.3)
48
48
  nokogiri (>= 1.8.5)
49
- actionview (6.1.7)
50
- activesupport (= 6.1.7)
49
+ actionview (6.1.7.3)
50
+ activesupport (= 6.1.7.3)
51
51
  builder (~> 3.1)
52
52
  erubi (~> 1.4)
53
53
  rails-dom-testing (~> 2.0)
54
54
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
55
- activejob (6.1.7)
56
- activesupport (= 6.1.7)
55
+ activejob (6.1.7.3)
56
+ activesupport (= 6.1.7.3)
57
57
  globalid (>= 0.3.6)
58
- activemodel (6.1.7)
59
- activesupport (= 6.1.7)
58
+ activemodel (6.1.7.3)
59
+ activesupport (= 6.1.7.3)
60
60
  activemodel-serializers-xml (1.0.2)
61
61
  activemodel (> 5.x)
62
62
  activesupport (> 5.x)
63
63
  builder (~> 3.1)
64
- activerecord (6.1.7)
65
- activemodel (= 6.1.7)
66
- activesupport (= 6.1.7)
64
+ activerecord (6.1.7.3)
65
+ activemodel (= 6.1.7.3)
66
+ activesupport (= 6.1.7.3)
67
67
  activeresource (6.0.0)
68
68
  activemodel (>= 6.0)
69
69
  activemodel-serializers-xml (~> 1.0)
70
70
  activesupport (>= 6.0)
71
- activestorage (6.1.7)
72
- actionpack (= 6.1.7)
73
- activejob (= 6.1.7)
74
- activerecord (= 6.1.7)
75
- activesupport (= 6.1.7)
71
+ activestorage (6.1.7.3)
72
+ actionpack (= 6.1.7.3)
73
+ activejob (= 6.1.7.3)
74
+ activerecord (= 6.1.7.3)
75
+ activesupport (= 6.1.7.3)
76
76
  marcel (~> 1.0)
77
77
  mini_mime (>= 1.1.0)
78
- activesupport (6.1.7)
78
+ activesupport (6.1.7.3)
79
79
  concurrent-ruby (~> 1.0, >= 1.0.2)
80
80
  i18n (>= 1.6, < 2)
81
81
  minitest (>= 5.1)
82
82
  tzinfo (~> 2.0)
83
83
  zeitwerk (~> 2.3)
84
- addressable (2.8.1)
84
+ addressable (2.8.4)
85
85
  public_suffix (>= 2.0.2, < 6.0)
86
86
  ast (2.4.2)
87
87
  binding_of_caller (1.0.0)
@@ -90,28 +90,29 @@ GEM
90
90
  builder (3.2.4)
91
91
  byebug (11.1.3)
92
92
  coderay (1.1.3)
93
- concurrent-ruby (1.1.10)
93
+ concurrent-ruby (1.2.2)
94
94
  crack (0.4.5)
95
95
  rexml
96
96
  crass (1.0.6)
97
+ date (3.3.3)
97
98
  debug_inspector (1.1.0)
98
- erubi (1.11.0)
99
- globalid (1.0.0)
99
+ erubi (1.12.0)
100
+ globalid (1.1.0)
100
101
  activesupport (>= 5.0)
101
102
  hash_diff (1.1.1)
102
103
  hashdiff (1.0.1)
103
104
  httparty (0.21.0)
104
105
  mini_mime (>= 1.0.0)
105
106
  multi_xml (>= 0.5.2)
106
- i18n (1.12.0)
107
+ i18n (1.13.0)
107
108
  concurrent-ruby (~> 1.0)
108
109
  json (2.6.3)
109
- jwt (2.6.0)
110
- language_server-protocol (3.17.0.2)
111
- loofah (2.19.0)
110
+ jwt (2.7.0)
111
+ language_server-protocol (3.17.0.3)
112
+ loofah (2.21.3)
112
113
  crass (~> 1.0.2)
113
- nokogiri (>= 1.5.9)
114
- mail (2.8.0)
114
+ nokogiri (>= 1.12.0)
115
+ mail (2.8.1)
115
116
  mini_mime (>= 0.1.1)
116
117
  net-imap
117
118
  net-pop
@@ -119,32 +120,33 @@ GEM
119
120
  marcel (1.0.2)
120
121
  method_source (1.0.0)
121
122
  mini_mime (1.1.2)
122
- minitest (5.17.0)
123
+ minitest (5.18.0)
123
124
  mocha (2.0.2)
124
125
  ruby2_keywords (>= 0.0.5)
125
126
  multi_xml (0.6.0)
126
- net-imap (0.3.1)
127
+ net-imap (0.3.4)
128
+ date
127
129
  net-protocol
128
130
  net-pop (0.1.2)
129
131
  net-protocol
130
- net-protocol (0.2.0)
132
+ net-protocol (0.2.1)
131
133
  timeout
132
134
  net-smtp (0.3.3)
133
135
  net-protocol
134
- nio4r (2.5.8)
135
- nokogiri (1.13.9-arm64-darwin)
136
+ nio4r (2.5.9)
137
+ nokogiri (1.15.0-arm64-darwin)
136
138
  racc (~> 1.4)
137
- nokogiri (1.13.9-x86_64-darwin)
139
+ nokogiri (1.15.0-x86_64-darwin)
138
140
  racc (~> 1.4)
139
- nokogiri (1.13.9-x86_64-linux)
141
+ nokogiri (1.15.0-x86_64-linux)
140
142
  racc (~> 1.4)
141
- oj (3.13.23)
143
+ oj (3.14.3)
142
144
  openssl (3.1.0)
143
- parallel (1.22.1)
144
- parser (3.1.3.0)
145
+ parallel (1.23.0)
146
+ parser (3.2.2.1)
145
147
  ast (~> 2.4.1)
146
- prettier_print (1.1.0)
147
- pry (0.14.1)
148
+ prettier_print (1.2.1)
149
+ pry (0.14.2)
148
150
  coderay (~> 1.1)
149
151
  method_source (~> 1.0)
150
152
  pry-nav (1.0.0)
@@ -153,24 +155,24 @@ GEM
153
155
  binding_of_caller (~> 1.0)
154
156
  pry (~> 0.13)
155
157
  public_suffix (5.0.1)
156
- racc (1.6.1)
157
- rack (2.2.4)
158
- rack-test (2.0.2)
158
+ racc (1.6.2)
159
+ rack (2.2.7)
160
+ rack-test (2.1.0)
159
161
  rack (>= 1.3)
160
- rails (6.1.7)
161
- actioncable (= 6.1.7)
162
- actionmailbox (= 6.1.7)
163
- actionmailer (= 6.1.7)
164
- actionpack (= 6.1.7)
165
- actiontext (= 6.1.7)
166
- actionview (= 6.1.7)
167
- activejob (= 6.1.7)
168
- activemodel (= 6.1.7)
169
- activerecord (= 6.1.7)
170
- activestorage (= 6.1.7)
171
- activesupport (= 6.1.7)
162
+ rails (6.1.7.3)
163
+ actioncable (= 6.1.7.3)
164
+ actionmailbox (= 6.1.7.3)
165
+ actionmailer (= 6.1.7.3)
166
+ actionpack (= 6.1.7.3)
167
+ actiontext (= 6.1.7.3)
168
+ actionview (= 6.1.7.3)
169
+ activejob (= 6.1.7.3)
170
+ activemodel (= 6.1.7.3)
171
+ activerecord (= 6.1.7.3)
172
+ activestorage (= 6.1.7.3)
173
+ activesupport (= 6.1.7.3)
172
174
  bundler (>= 1.15.0)
173
- railties (= 6.1.7)
175
+ railties (= 6.1.7.3)
174
176
  sprockets-rails (>= 2.0.0)
175
177
  rails-controller-testing (1.0.5)
176
178
  actionpack (>= 5.0.1.rc1)
@@ -179,11 +181,11 @@ GEM
179
181
  rails-dom-testing (2.0.3)
180
182
  activesupport (>= 4.2.0)
181
183
  nokogiri (>= 1.6)
182
- rails-html-sanitizer (1.4.3)
183
- loofah (~> 2.3)
184
- railties (6.1.7)
185
- actionpack (= 6.1.7)
186
- activesupport (= 6.1.7)
184
+ rails-html-sanitizer (1.5.0)
185
+ loofah (~> 2.19, >= 2.19.1)
186
+ railties (6.1.7.3)
187
+ actionpack (= 6.1.7.3)
188
+ activesupport (= 6.1.7.3)
187
189
  method_source
188
190
  rake (>= 12.2)
189
191
  thor (~> 1.0)
@@ -192,30 +194,30 @@ GEM
192
194
  rb-readline (0.5.5)
193
195
  redirect_safely (1.0.0)
194
196
  activemodel
195
- regexp_parser (2.6.1)
197
+ regexp_parser (2.8.0)
196
198
  rexml (3.2.5)
197
- rubocop (1.39.0)
199
+ rubocop (1.51.0)
198
200
  json (~> 2.3)
199
201
  parallel (~> 1.10)
200
- parser (>= 3.1.2.1)
202
+ parser (>= 3.2.0.0)
201
203
  rainbow (>= 2.2.2, < 4.0)
202
204
  regexp_parser (>= 1.8, < 3.0)
203
205
  rexml (>= 3.2.5, < 4.0)
204
- rubocop-ast (>= 1.23.0, < 2.0)
206
+ rubocop-ast (>= 1.28.0, < 2.0)
205
207
  ruby-progressbar (~> 1.7)
206
- unicode-display_width (>= 1.4.0, < 3.0)
207
- rubocop-ast (1.24.0)
208
- parser (>= 3.1.1.0)
209
- rubocop-shopify (2.10.1)
210
- rubocop (~> 1.35)
211
- ruby-lsp (0.3.6)
208
+ unicode-display_width (>= 2.4.0, < 3.0)
209
+ rubocop-ast (1.28.1)
210
+ parser (>= 3.2.1.0)
211
+ rubocop-shopify (2.13.0)
212
+ rubocop (~> 1.50)
213
+ ruby-lsp (0.5.1)
212
214
  language_server-protocol (~> 3.17.0)
213
215
  sorbet-runtime
214
- syntax_tree (>= 4.0.2, < 5.0.0)
215
- ruby-progressbar (1.11.0)
216
+ syntax_tree (>= 6.1.1, < 7)
217
+ ruby-progressbar (1.13.0)
216
218
  ruby2_keywords (0.0.5)
217
219
  securerandom (0.2.2)
218
- shopify_api (12.4.0)
220
+ shopify_api (13.0.0)
219
221
  activesupport
220
222
  concurrent-ruby
221
223
  hash_diff
@@ -226,24 +228,24 @@ GEM
226
228
  securerandom
227
229
  sorbet-runtime
228
230
  zeitwerk (~> 2.5, < 2.6.5)
229
- sorbet-runtime (0.5.10601)
230
- sprockets (4.1.1)
231
+ sorbet-runtime (0.5.10835)
232
+ sprockets (4.2.0)
231
233
  concurrent-ruby (~> 1.0)
232
- rack (> 1, < 3)
234
+ rack (>= 2.2.4, < 4)
233
235
  sprockets-rails (3.4.2)
234
236
  actionpack (>= 5.2)
235
237
  activesupport (>= 5.2)
236
238
  sprockets (>= 3.0.0)
237
- sqlite3 (1.5.4-arm64-darwin)
238
- sqlite3 (1.5.4-x86_64-darwin)
239
- sqlite3 (1.5.4-x86_64-linux)
240
- syntax_tree (4.3.0)
241
- prettier_print (>= 1.0.2)
242
- thor (1.2.1)
243
- timeout (0.3.1)
244
- tzinfo (2.0.5)
239
+ sqlite3 (1.6.3-arm64-darwin)
240
+ sqlite3 (1.6.3-x86_64-darwin)
241
+ sqlite3 (1.6.3-x86_64-linux)
242
+ syntax_tree (6.1.1)
243
+ prettier_print (>= 1.2.0)
244
+ thor (1.2.2)
245
+ timeout (0.3.2)
246
+ tzinfo (2.0.6)
245
247
  concurrent-ruby (~> 1.0)
246
- unicode-display_width (2.3.0)
248
+ unicode-display_width (2.4.2)
247
249
  webmock (3.18.1)
248
250
  addressable (>= 2.8.0)
249
251
  crack (>= 0.3.2)
@@ -255,7 +257,10 @@ GEM
255
257
 
256
258
  PLATFORMS
257
259
  arm64-darwin-21
260
+ arm64-darwin-22
258
261
  x86_64-darwin-19
262
+ x86_64-darwin-20
263
+ x86_64-darwin-21
259
264
  x86_64-linux
260
265
 
261
266
  DEPENDENCIES
@@ -276,4 +281,4 @@ DEPENDENCIES
276
281
  webmock
277
282
 
278
283
  BUNDLED WITH
279
- 2.3.4
284
+ 2.4.10
@@ -5,8 +5,11 @@ module ShopifyApp
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  included do
8
- ShopifyApp::Logger.deprecated("Authenticated has been replaced by EnsureHasSession."\
9
- " Please use the EnsureHasSession controller concern for the same behavior", "22.0.0")
8
+ ShopifyApp::Logger.deprecated(
9
+ "Authenticated has been replaced by EnsureHasSession."\
10
+ " Please use the EnsureHasSession controller concern for the same behavior",
11
+ "22.0.0",
12
+ )
10
13
  end
11
14
 
12
15
  include ShopifyApp::EnsureHasSession
@@ -6,8 +6,11 @@ module ShopifyApp
6
6
  include ShopifyApp::EnsureInstalled
7
7
 
8
8
  included do
9
- ShopifyApp::Logger.deprecated("RequireKnownShop has been replaced by EnsureInstalled."\
10
- " Please use the EnsureInstalled controller concern for the same behavior", "22.0.0")
9
+ ShopifyApp::Logger.deprecated(
10
+ "RequireKnownShop has been replaced by EnsureInstalled."\
11
+ " Please use the EnsureInstalled controller concern for the same behavior",
12
+ "22.0.0",
13
+ )
11
14
  end
12
15
  end
13
16
  end
@@ -35,7 +35,7 @@ This will generate a shop model and user model, which will be the storage for th
35
35
 
36
36
  The current Shopify user will be stored in the rails session at `session[:shopify_user]`
37
37
 
38
- Read more about Online vs. Offline access [here](https://help.shopify.com/api/getting-started/authentication/oauth).
38
+ Read more about Online vs. Offline access [here](https://shopify.dev/apps/auth/oauth/access-modes).
39
39
 
40
40
  ## Access scopes
41
41
 
@@ -25,8 +25,11 @@ module ShopifyApp
25
25
  )
26
26
 
27
27
  unless initializer.include?(after_authenticate_job_config)
28
- shell.say("Error adding after_authenticate_job to config. Add this line manually: "\
29
- "#{after_authenticate_job_config}", :red)
28
+ shell.say(
29
+ "Error adding after_authenticate_job to config. Add this line manually: "\
30
+ "#{after_authenticate_job_config}",
31
+ :red,
32
+ )
30
33
  end
31
34
  end
32
35
 
@@ -5,7 +5,7 @@ module Shopify
5
5
  def perform(shop_domain:)
6
6
  shop = Shop.find_by(shopify_domain: shop_domain)
7
7
 
8
- shop.with_shopify_session do
8
+ shop.with_shopify_session do |session|
9
9
  end
10
10
  end
11
11
  end
@@ -12,11 +12,11 @@ class <%= @job_class_name %> < ActiveJob::Base
12
12
 
13
13
  if shop.nil?
14
14
  logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'")
15
-
15
+
16
16
  raise ActiveRecord::RecordNotFound, "Shop Not Found"
17
17
  end
18
18
 
19
- shop.with_shopify_session do
19
+ shop.with_shopify_session do |session|
20
20
  end
21
21
  end
22
22
  end
@@ -13,8 +13,8 @@ module ShopifyApp
13
13
  class_option :embedded, type: :string, default: "true"
14
14
  class_option :api_version, type: :string, default: nil
15
15
 
16
- NGROK_HOST = "/\[-\\w]+\\.ngrok\\.io/"
17
- CLOUDFLARE_HOST = "/\[-\\w]+\\.trycloudflare\\.com/"
16
+ NGROK_HOST = "/[-\\w]+\\.ngrok\\.io/"
17
+ CLOUDFLARE_HOST = "/[-\\w]+\\.trycloudflare\\.com/"
18
18
 
19
19
  def create_shopify_app_initializer
20
20
  @application_name = format_array_argument(options["application_name"])
@@ -1,5 +1,5 @@
1
1
  class AddShopAccessScopesColumn < ActiveRecord::Migration[<%= rails_migration_version %>]
2
2
  def change
3
- add_column :shops, :access_scopes, :string
3
+ add_column :shops, :access_scopes, :string, default: "", null: false
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  class AddUserAccessScopesColumn < ActiveRecord::Migration[<%= rails_migration_version %>]
2
2
  def change
3
- add_column :users, :access_scopes, :string
3
+ add_column :users, :access_scopes, :string, default: "", null: false
4
4
  end
5
5
  end
@@ -8,8 +8,10 @@ module ShopifyApp
8
8
  return update_access_scopes_for_user_id?(user_id) if user_id
9
9
  return update_access_scopes_for_shopify_user_id?(shopify_user_id) if shopify_user_id
10
10
 
11
- raise(::ShopifyApp::InvalidInput,
12
- "#update_access_scopes? requires user_id or shopify_user_id parameter inputs")
11
+ raise(
12
+ ::ShopifyApp::InvalidInput,
13
+ "#update_access_scopes? requires user_id or shopify_user_id parameter inputs",
14
+ )
13
15
  end
14
16
 
15
17
  def covers_scopes?(current_shopify_session)
@@ -30,6 +30,8 @@ module ShopifyApp
30
30
  add_top_level_redirection_headers(url: confirmation_url, ignore_response_code: true)
31
31
  ShopifyApp::Logger.debug("Responding with 401 unauthorized")
32
32
  head(:unauthorized)
33
+ elsif ShopifyApp.configuration.embedded_app?
34
+ fullpage_redirect_to(confirmation_url)
33
35
  else
34
36
  redirect_to(confirmation_url, allow_other_host: true)
35
37
  end
@@ -174,7 +176,7 @@ module ShopifyApp
174
176
  response
175
177
  end
176
178
 
177
- RECURRING_PURCHASES_QUERY = <<~'QUERY'
179
+ RECURRING_PURCHASES_QUERY = <<~QUERY
178
180
  query appSubscription {
179
181
  currentAppInstallation {
180
182
  activeSubscriptions {
@@ -184,7 +186,7 @@ module ShopifyApp
184
186
  }
185
187
  QUERY
186
188
 
187
- ONE_TIME_PURCHASES_QUERY = <<~'QUERY'
189
+ ONE_TIME_PURCHASES_QUERY = <<~QUERY
188
190
  query appPurchases($endCursor: String) {
189
191
  currentAppInstallation {
190
192
  oneTimePurchases(first: 250, sortKey: CREATED_AT, after: $endCursor) {
@@ -201,7 +203,7 @@ module ShopifyApp
201
203
  }
202
204
  QUERY
203
205
 
204
- RECURRING_PURCHASE_MUTATION = <<~'QUERY'
206
+ RECURRING_PURCHASE_MUTATION = <<~QUERY
205
207
  mutation createPaymentMutation(
206
208
  $name: String!
207
209
  $lineItems: [AppSubscriptionLineItemInput!]!
@@ -222,7 +224,7 @@ module ShopifyApp
222
224
  }
223
225
  QUERY
224
226
 
225
- ONE_TIME_PURCHASE_MUTATION = <<~'QUERY'
227
+ ONE_TIME_PURCHASE_MUTATION = <<~QUERY
226
228
  mutation createPaymentMutation(
227
229
  $name: String!
228
230
  $price: MoneyInput!
@@ -205,8 +205,11 @@ module ShopifyApp
205
205
  if ShopifyApp.configuration.embedded_app?
206
206
  raise ::ShopifyApp::ShopifyDomainNotFound if current_shopify_domain.nil?
207
207
 
208
- render("shopify_app/shared/redirect", layout: false,
209
- locals: { url: url, current_shopify_domain: current_shopify_domain })
208
+ render(
209
+ "shopify_app/shared/redirect",
210
+ layout: false,
211
+ locals: { url: url, current_shopify_domain: current_shopify_domain },
212
+ )
210
213
  else
211
214
  redirect_to(url)
212
215
  end
@@ -17,9 +17,14 @@ module ShopifyApp
17
17
  isolate_namespace ShopifyApp
18
18
 
19
19
  initializer "shopify_app.assets.precompile" do |app|
20
- app.config.assets.precompile += ["shopify_app/redirect.js", "shopify_app/post_redirect.js",
21
- "shopify_app/top_level.js", "shopify_app/enable_cookies.js",
22
- "shopify_app/request_storage_access.js", "storage_access.svg",]
20
+ app.config.assets.precompile += [
21
+ "shopify_app/redirect.js",
22
+ "shopify_app/post_redirect.js",
23
+ "shopify_app/top_level.js",
24
+ "shopify_app/enable_cookies.js",
25
+ "shopify_app/request_storage_access.js",
26
+ "storage_access.svg",
27
+ ]
23
28
  end
24
29
 
25
30
  initializer "shopify_app.middleware" do |app|
@@ -24,10 +24,8 @@ module ShopifyApp
24
24
  destroy_webhooks(session: session)
25
25
  return unless ShopifyApp.configuration.has_webhooks?
26
26
 
27
- add_registrations
28
-
29
27
  ShopifyApp::Logger.debug("Recreating webhooks")
30
- ShopifyAPI::Webhooks::Registry.register_all(session: session)
28
+ add_registrations
31
29
  end
32
30
 
33
31
  def destroy_webhooks(session:)
@@ -80,8 +78,10 @@ module ShopifyApp
80
78
  def webhook_job_klass_name(path)
81
79
  job_file_name = Pathname(path.to_s).basename
82
80
 
83
- [ShopifyApp.configuration.webhook_jobs_namespace,
84
- "#{job_file_name}_job",].compact.join("/").classify
81
+ [
82
+ ShopifyApp.configuration.webhook_jobs_namespace,
83
+ "#{job_file_name}_job",
84
+ ].compact.join("/").classify
85
85
  end
86
86
  end
87
87
  end
@@ -2,8 +2,6 @@
2
2
 
3
3
  module ShopifyApp
4
4
  class SessionRepository
5
- extend ShopifyAPI::Auth::SessionStorage
6
-
7
5
  class << self
8
6
  attr_writer :shop_storage
9
7
 
@@ -34,8 +32,10 @@ module ShopifyApp
34
32
  end
35
33
 
36
34
  def shop_storage
37
- load_shop_storage || raise(::ShopifyApp::ConfigurationError,
38
- "ShopifySessionRepository.shop_storage is not configured!")
35
+ load_shop_storage || raise(
36
+ ::ShopifyApp::ConfigurationError,
37
+ "ShopifySessionRepository.shop_storage is not configured!",
38
+ )
39
39
  end
40
40
 
41
41
  def user_storage
@@ -10,8 +10,8 @@ module ShopifyApp
10
10
  end
11
11
 
12
12
  def with_shopify_session(&block)
13
- ShopifyAPI::Auth::Session.temp(shop: shopify_domain, access_token: shopify_token) do
14
- yield block
13
+ ShopifyAPI::Auth::Session.temp(shop: shopify_domain, access_token: shopify_token) do |session|
14
+ block.call(session)
15
15
  end
16
16
  end
17
17
  end
@@ -18,10 +18,10 @@ module ShopifyApp
18
18
  no_shop_name_in_subdomain = uri.host == trusted_domain
19
19
  from_trusted_domain = trusted_domain == uri.domain
20
20
 
21
+ return myshopify_domain_from_unified_admin(uri) if unified_admin?(uri) && from_trusted_domain
21
22
  return nil if no_shop_name_in_subdomain || uri.host&.empty?
22
23
  return uri.host if from_trusted_domain
23
24
  end
24
-
25
25
  nil
26
26
  end
27
27
 
@@ -65,6 +65,16 @@ module ShopifyApp
65
65
  rescue Addressable::URI::InvalidURIError
66
66
  nil
67
67
  end
68
+
69
+ def unified_admin?(uri)
70
+ uri.host.split(".").first == "admin"
71
+ end
72
+
73
+ def myshopify_domain_from_unified_admin(uri)
74
+ shop = uri.path.split("/").last
75
+
76
+ "#{shop}.myshopify.com"
77
+ end
68
78
  end
69
79
  end
70
80
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ShopifyApp
4
- VERSION = "21.4.1"
4
+ VERSION = "21.5.0"
5
5
  end
data/service.yml CHANGED
@@ -1,3 +1 @@
1
1
  audience: partner
2
- slack_channels:
3
- - shopify_app_gem
data/shopify_app.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.add_runtime_dependency("jwt", ">= 2.2.3")
21
21
  s.add_runtime_dependency("rails", "> 5.2.1")
22
22
  s.add_runtime_dependency("redirect_safely", "~> 1.0")
23
- s.add_runtime_dependency("shopify_api", "~> 12.4")
23
+ s.add_runtime_dependency("shopify_api", "~> 13.0")
24
24
  s.add_runtime_dependency("sprockets-rails", ">= 2.0.0")
25
25
 
26
26
  s.add_development_dependency("byebug")
data/translation.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  source_language: en
2
2
  target_languages: [cs, da, de, es, fi, fr, it, ja, ko, nb, nl, pl, pt-BR, pt-PT, sv, th, tr, vi, zh-CN, zh-TW]
3
+ async_pr_mode: per_pr
3
4
  components:
4
5
  - name: 'merchant'
5
6
  paths:
data/yarn.lock CHANGED
@@ -2070,9 +2070,9 @@ decamelize@^1.2.0:
2070
2070
  integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
2071
2071
 
2072
2072
  decode-uri-component@^0.2.0:
2073
- version "0.2.0"
2074
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
2075
- integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
2073
+ version "0.2.2"
2074
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
2075
+ integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
2076
2076
 
2077
2077
  deep-eql@^3.0.1:
2078
2078
  version "3.0.1"
@@ -3171,9 +3171,9 @@ json-schema-traverse@^0.4.1:
3171
3171
  integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
3172
3172
 
3173
3173
  json5@^1.0.1:
3174
- version "1.0.1"
3175
- resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
3176
- integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
3174
+ version "1.0.2"
3175
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
3176
+ integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
3177
3177
  dependencies:
3178
3178
  minimist "^1.2.0"
3179
3179
 
@@ -3317,9 +3317,9 @@ loader-runner@^2.4.0:
3317
3317
  integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
3318
3318
 
3319
3319
  loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
3320
- version "1.4.0"
3321
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
3322
- integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
3320
+ version "1.4.2"
3321
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3"
3322
+ integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==
3323
3323
  dependencies:
3324
3324
  big.js "^5.2.2"
3325
3325
  emojis-list "^3.0.0"
@@ -3515,9 +3515,9 @@ minimatch@3.0.4, minimatch@^3.0.4:
3515
3515
  brace-expansion "^1.1.7"
3516
3516
 
3517
3517
  minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5:
3518
- version "1.2.6"
3519
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
3520
- integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
3518
+ version "1.2.8"
3519
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
3520
+ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
3521
3521
 
3522
3522
  mississippi@^3.0.0:
3523
3523
  version "3.0.0"
@@ -4730,9 +4730,9 @@ terser-webpack-plugin@^1.4.3:
4730
4730
  worker-farm "^1.7.0"
4731
4731
 
4732
4732
  terser@^4.1.2:
4733
- version "4.8.0"
4734
- resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
4735
- integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
4733
+ version "4.8.1"
4734
+ resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f"
4735
+ integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==
4736
4736
  dependencies:
4737
4737
  commander "^2.20.0"
4738
4738
  source-map "~0.6.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: 21.4.1
4
+ version: 21.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-21 00:00:00.000000000 Z
11
+ date: 2023-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeresource
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '12.4'
103
+ version: '13.0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '12.4'
110
+ version: '13.0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: sprockets-rails
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -490,7 +490,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
490
490
  - !ruby/object:Gem::Version
491
491
  version: '0'
492
492
  requirements: []
493
- rubygems_version: 3.3.3
493
+ rubygems_version: 3.4.13
494
494
  signing_key:
495
495
  specification_version: 4
496
496
  summary: This gem is used to get quickly started with the Shopify API