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.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +3 -3
- data/.github/workflows/release.yml +1 -1
- data/.github/workflows/remove-labels-on-activity.yml +1 -1
- data/.github/workflows/rubocop.yml +1 -1
- data/.github/workflows/stale.yml +22 -11
- data/.ruby-version +1 -1
- data/CHANGELOG.md +9 -0
- data/Gemfile.lock +113 -108
- data/app/controllers/concerns/shopify_app/authenticated.rb +5 -2
- data/app/controllers/concerns/shopify_app/require_known_shop.rb +5 -2
- data/docs/shopify_app/session-repository.md +1 -1
- data/lib/generators/shopify_app/add_after_authenticate_job/add_after_authenticate_job_generator.rb +5 -2
- data/lib/generators/shopify_app/add_after_authenticate_job/templates/after_authenticate_job.rb +1 -1
- data/lib/generators/shopify_app/add_webhook/templates/webhook_job.rb.tt +2 -2
- data/lib/generators/shopify_app/install/install_generator.rb +2 -2
- data/lib/generators/shopify_app/shop_model/templates/db/migrate/add_shop_access_scopes_column.erb +1 -1
- data/lib/generators/shopify_app/user_model/templates/db/migrate/add_user_access_scopes_column.erb +1 -1
- data/lib/shopify_app/access_scopes/user_strategy.rb +4 -2
- data/lib/shopify_app/controller_concerns/ensure_billing.rb +6 -4
- data/lib/shopify_app/controller_concerns/login_protection.rb +5 -2
- data/lib/shopify_app/engine.rb +8 -3
- data/lib/shopify_app/managers/webhooks_manager.rb +5 -5
- data/lib/shopify_app/session/session_repository.rb +4 -4
- data/lib/shopify_app/session/session_storage.rb +2 -2
- data/lib/shopify_app/utils.rb +11 -1
- data/lib/shopify_app/version.rb +1 -1
- data/service.yml +0 -2
- data/shopify_app.gemspec +1 -1
- data/translation.yml +1 -0
- data/yarn.lock +15 -15
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '029b36852c1c017c7e96570b5e90aca34f2471bd9b56699c1bc1d4ef6f6996a8'
|
4
|
+
data.tar.gz: '01239772e056908581b57f0cc93dc3b867fa14447887865c19b09e7b6fae08bf'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10cdbfa6bef394875c1d5bd518f62862c289bce52f835af22dae3c3c3f64d91629008e012cf10e7e1dd83fff70664fd01cc070dd90672e99f88bde9e529aba03
|
7
|
+
data.tar.gz: e38068aca0100e029f26695c5558c698ebff02fb7a4189b217a7b8e38902d4a8d38564f4a8eabba4d959bf55677e54822444937d43da2251e88f9334c3dc2a85
|
data/.github/workflows/build.yml
CHANGED
@@ -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@
|
18
|
+
- uses: actions/checkout@v3
|
19
19
|
- name: Cache node modules
|
20
|
-
uses: actions/cache@
|
20
|
+
uses: actions/cache@v3
|
21
21
|
with:
|
22
22
|
# npm cache files are stored in `~/.npm` on Linux/macOS
|
23
23
|
path: ~/.npm
|
@@ -7,7 +7,7 @@ jobs:
|
|
7
7
|
remove-labels-on-activity:
|
8
8
|
runs-on: ubuntu-latest
|
9
9
|
steps:
|
10
|
-
- uses: actions/checkout@
|
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:
|
data/.github/workflows/stale.yml
CHANGED
@@ -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
|
-
|
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@
|
13
|
+
- uses: actions/stale@v7
|
14
14
|
with:
|
15
|
-
days-before-issue-stale:
|
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
|
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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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.
|
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
|
+
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 (~>
|
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.
|
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.
|
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.
|
99
|
-
globalid (1.
|
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.
|
107
|
+
i18n (1.13.0)
|
107
108
|
concurrent-ruby (~> 1.0)
|
108
109
|
json (2.6.3)
|
109
|
-
jwt (2.
|
110
|
-
language_server-protocol (3.17.0.
|
111
|
-
loofah (2.
|
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.
|
114
|
-
mail (2.8.
|
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.
|
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.
|
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.
|
132
|
+
net-protocol (0.2.1)
|
131
133
|
timeout
|
132
134
|
net-smtp (0.3.3)
|
133
135
|
net-protocol
|
134
|
-
nio4r (2.5.
|
135
|
-
nokogiri (1.
|
136
|
+
nio4r (2.5.9)
|
137
|
+
nokogiri (1.15.0-arm64-darwin)
|
136
138
|
racc (~> 1.4)
|
137
|
-
nokogiri (1.
|
139
|
+
nokogiri (1.15.0-x86_64-darwin)
|
138
140
|
racc (~> 1.4)
|
139
|
-
nokogiri (1.
|
141
|
+
nokogiri (1.15.0-x86_64-linux)
|
140
142
|
racc (~> 1.4)
|
141
|
-
oj (3.
|
143
|
+
oj (3.14.3)
|
142
144
|
openssl (3.1.0)
|
143
|
-
parallel (1.
|
144
|
-
parser (3.
|
145
|
+
parallel (1.23.0)
|
146
|
+
parser (3.2.2.1)
|
145
147
|
ast (~> 2.4.1)
|
146
|
-
prettier_print (1.1
|
147
|
-
pry (0.14.
|
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.
|
157
|
-
rack (2.2.
|
158
|
-
rack-test (2.0
|
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.
|
183
|
-
loofah (~> 2.
|
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.
|
197
|
+
regexp_parser (2.8.0)
|
196
198
|
rexml (3.2.5)
|
197
|
-
rubocop (1.
|
199
|
+
rubocop (1.51.0)
|
198
200
|
json (~> 2.3)
|
199
201
|
parallel (~> 1.10)
|
200
|
-
parser (>= 3.
|
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.
|
206
|
+
rubocop-ast (>= 1.28.0, < 2.0)
|
205
207
|
ruby-progressbar (~> 1.7)
|
206
|
-
unicode-display_width (>=
|
207
|
-
rubocop-ast (1.
|
208
|
-
parser (>= 3.
|
209
|
-
rubocop-shopify (2.
|
210
|
-
rubocop (~> 1.
|
211
|
-
ruby-lsp (0.
|
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 (>=
|
215
|
-
ruby-progressbar (1.
|
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 (
|
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.
|
230
|
-
sprockets (4.
|
231
|
+
sorbet-runtime (0.5.10835)
|
232
|
+
sprockets (4.2.0)
|
231
233
|
concurrent-ruby (~> 1.0)
|
232
|
-
rack (
|
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.
|
238
|
-
sqlite3 (1.
|
239
|
-
sqlite3 (1.
|
240
|
-
syntax_tree (
|
241
|
-
prettier_print (>= 1.0
|
242
|
-
thor (1.2.
|
243
|
-
timeout (0.3.
|
244
|
-
tzinfo (2.0.
|
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.
|
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.
|
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(
|
9
|
-
"
|
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(
|
10
|
-
"
|
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://
|
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
|
|
data/lib/generators/shopify_app/add_after_authenticate_job/add_after_authenticate_job_generator.rb
CHANGED
@@ -25,8 +25,11 @@ module ShopifyApp
|
|
25
25
|
)
|
26
26
|
|
27
27
|
unless initializer.include?(after_authenticate_job_config)
|
28
|
-
shell.say(
|
29
|
-
"
|
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
|
|
@@ -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 = "
|
17
|
-
CLOUDFLARE_HOST = "
|
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"])
|
@@ -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(
|
12
|
-
|
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 = <<~
|
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 = <<~
|
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 = <<~
|
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 = <<~
|
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(
|
209
|
-
|
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
|
data/lib/shopify_app/engine.rb
CHANGED
@@ -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 += [
|
21
|
-
|
22
|
-
|
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
|
-
|
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
|
-
[
|
84
|
-
|
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(
|
38
|
-
|
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
|
-
|
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
|
data/lib/shopify_app/utils.rb
CHANGED
@@ -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
|
data/lib/shopify_app/version.rb
CHANGED
data/service.yml
CHANGED
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", "~>
|
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
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.
|
2074
|
-
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.
|
2075
|
-
integrity
|
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.
|
3175
|
-
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.
|
3176
|
-
integrity sha512-
|
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.
|
3321
|
-
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.
|
3322
|
-
integrity sha512-
|
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.
|
3519
|
-
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.
|
3520
|
-
integrity sha512-
|
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.
|
4734
|
-
resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.
|
4735
|
-
integrity sha512-
|
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
|
+
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-
|
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: '
|
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: '
|
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.
|
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
|