ruby_shopify_app 1.3.1 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4f1c0b9278c1d143d0872ca501b2259cae0998c2cba5d7c6ebac4b58428a81b1
4
- data.tar.gz: 7f9c04c736700f0e35d65af04949f8f56bcbc56611f2ddd61e796586808e4ab5
3
+ metadata.gz: 168effe34bcce65dfa9479f8e54da222422df9eb1076d6bc85df5316a9bc7206
4
+ data.tar.gz: 29be70f5e1573aedc5b92e4bd28c2ef93cfb5157818d5643c003cd0c286a3520
5
5
  SHA512:
6
- metadata.gz: 3ca8751b1d52328e68c609cba8184ae0ea035b74a0f27ab5c97a15cc01207cce6846ab5ae71db8510165e8651eb4abe16572c76642a5487cec1234276976f0e6
7
- data.tar.gz: 13f1848f49f793540f6f3b670466be3b7f4d6e728499810e080088514c8244aa25053e24cc459a27be3e937a39da3f3122d371997c4d24fdd451774e813ea46b
6
+ metadata.gz: b1d451fd0ba155fc4c873faacf0b81b9c4906d327aa8ed864fdc3d51a875a22c8e78ee069f5e0634d999ad0ef08664e48fbc04471a25e6b08825b45807cb9d85
7
+ data.tar.gz: aa5947fe71372462ed7dc5714fcc8fb3ecddfec39fd6b5c6ee8044ae9bc1e96894cf2cffec767b977e9f22073d002d9a2e55c3eb70914fc1bad983bd4103ca38
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ 1.3.3
2
+ -----
3
+
4
+ * Fix a auth issue happens on safari 8
5
+
6
+ 1.3.2
7
+ -----
8
+
9
+ * better helper to determine if JS requested action
10
+
1
11
  1.3.1
2
12
  -----
3
13
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby_shopify_app (1.2.0)
4
+ ruby_shopify_app (1.3.3)
5
5
  browser_sniffer (~> 2.0)
6
6
  jwt (>= 2.2.3)
7
7
  omniauth-rails_csrf_protection
@@ -108,7 +108,7 @@ GEM
108
108
  net-http
109
109
  globalid (1.2.1)
110
110
  activesupport (>= 6.1)
111
- graphql (2.3.2)
111
+ graphql (2.3.4)
112
112
  base64
113
113
  graphql-client (0.22.0)
114
114
  activesupport (>= 3.0)
@@ -142,7 +142,7 @@ GEM
142
142
  bigdecimal (~> 3.1)
143
143
  net-http (0.4.1)
144
144
  uri
145
- net-imap (0.4.10)
145
+ net-imap (0.4.12)
146
146
  date
147
147
  net-protocol
148
148
  net-pop (0.1.2)
@@ -151,7 +151,7 @@ GEM
151
151
  timeout
152
152
  net-smtp (0.5.0)
153
153
  net-protocol
154
- nio4r (2.7.1)
154
+ nio4r (2.7.3)
155
155
  nokogiri (1.16.4)
156
156
  mini_portile2 (~> 2.8.2)
157
157
  racc (~> 1.4)
@@ -166,7 +166,7 @@ GEM
166
166
  hashie (>= 3.4.6)
167
167
  rack (>= 2.2.3)
168
168
  rack-protection
169
- omniauth-rails_csrf_protection (1.0.1)
169
+ omniauth-rails_csrf_protection (1.0.2)
170
170
  actionpack (>= 4.2)
171
171
  omniauth (~> 2.0)
172
172
  omniauth-shopify-app (1.0.0)
@@ -251,9 +251,9 @@ GEM
251
251
  sprockets (4.2.1)
252
252
  concurrent-ruby (~> 1.0)
253
253
  rack (>= 2.2.4, < 4)
254
- sprockets-rails (3.4.2)
255
- actionpack (>= 5.2)
256
- activesupport (>= 5.2)
254
+ sprockets-rails (3.5.1)
255
+ actionpack (>= 6.1)
256
+ activesupport (>= 6.1)
257
257
  sprockets (>= 3.0.0)
258
258
  sqlite3 (1.7.3)
259
259
  mini_portile2 (~> 2.8.0)
@@ -271,7 +271,7 @@ GEM
271
271
  websocket-driver (0.7.6)
272
272
  websocket-extensions (>= 0.1.0)
273
273
  websocket-extensions (0.1.5)
274
- zeitwerk (2.6.13)
274
+ zeitwerk (2.6.15)
275
275
 
276
276
  PLATFORMS
277
277
  ruby
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'browser_sniffer'
3
+ require "browser_sniffer"
4
4
 
5
5
  module ShopifyApp
6
6
  module LoginProtection
@@ -16,7 +16,7 @@ module ShopifyApp
16
16
  rescue_from ActiveResource::UnauthorizedAccess, with: :close_session
17
17
  end
18
18
 
19
- ACCESS_TOKEN_REQUIRED_HEADER = 'X-Shopify-API-Request-Failure-Unauthorized'
19
+ ACCESS_TOKEN_REQUIRED_HEADER = "X-Shopify-API-Request-Failure-Unauthorized"
20
20
 
21
21
  def activate_shopify_session
22
22
  if user_session_expected? && user_session.blank?
@@ -37,9 +37,7 @@ module ShopifyApp
37
37
  end
38
38
 
39
39
  def current_shopify_session
40
- @current_shopify_session ||= begin
41
- user_session || shop_session
42
- end
40
+ @current_shopify_session ||= user_session || shop_session
43
41
  end
44
42
 
45
43
  def user_session
@@ -49,12 +47,14 @@ module ShopifyApp
49
47
  def user_session_by_jwt
50
48
  return unless ShopifyApp.configuration.allow_jwt_authentication
51
49
  return unless jwt_shopify_user_id
50
+
52
51
  ShopifyApp::SessionRepository.retrieve_user_session_by_shopify_user_id(jwt_shopify_user_id)
53
52
  end
54
53
 
55
54
  def user_session_by_cookie
56
55
  return unless ShopifyApp.configuration.allow_cookie_authentication
57
56
  return unless session[:user_id].present?
57
+
58
58
  ShopifyApp::SessionRepository.retrieve_user_session(session[:user_id])
59
59
  end
60
60
 
@@ -65,12 +65,14 @@ module ShopifyApp
65
65
  def shop_session_by_jwt
66
66
  return unless ShopifyApp.configuration.allow_jwt_authentication
67
67
  return unless jwt_shopify_domain
68
+
68
69
  ShopifyApp::SessionRepository.retrieve_shop_session_by_shopify_domain(jwt_shopify_domain)
69
70
  end
70
71
 
71
72
  def shop_session_by_cookie
72
73
  return unless ShopifyApp.configuration.allow_cookie_authentication
73
74
  return unless session[:shop_id].present?
75
+
74
76
  ShopifyApp::SessionRepository.retrieve_shop_session(session[:shop_id])
75
77
  end
76
78
 
@@ -80,8 +82,8 @@ module ShopifyApp
80
82
  end
81
83
 
82
84
  if current_shopify_session &&
83
- params[:shop] && params[:shop].is_a?(String) &&
84
- (current_shopify_session.domain != params[:shop])
85
+ params[:shop] && params[:shop].is_a?(String) &&
86
+ (current_shopify_session.domain != params[:shop])
85
87
  clear_session = true
86
88
  end
87
89
 
@@ -96,19 +98,20 @@ module ShopifyApp
96
98
  end
97
99
 
98
100
  def jwt_expire_at
99
- expire_at = request.env['jwt.expire_at']
101
+ expire_at = request.env["jwt.expire_at"]
100
102
  return unless expire_at
103
+
101
104
  expire_at - 5.seconds # 5s gap to start fetching new token in advance
102
105
  end
103
106
 
104
107
  protected
105
108
 
106
109
  def jwt_shopify_domain
107
- request.env['jwt.shopify_domain']
110
+ request.env["jwt.shopify_domain"]
108
111
  end
109
112
 
110
113
  def jwt_shopify_user_id
111
- request.env['jwt.shopify_user_id']
114
+ request.env["jwt.shopify_user_id"]
112
115
  end
113
116
 
114
117
  def host
@@ -116,7 +119,7 @@ module ShopifyApp
116
119
  end
117
120
 
118
121
  def redirect_to_login
119
- if request.xhr?
122
+ if requested_by_javascript?
120
123
  head(:unauthorized)
121
124
  else
122
125
  if request.get?
@@ -179,14 +182,17 @@ module ShopifyApp
179
182
  end
180
183
 
181
184
  def return_to_param_required?
182
- native_params = %i[shop hmac timestamp locale protocol return_to]
183
- request.path != '/' || sanitized_params.except(*native_params).any?
185
+ native_params = [:shop, :hmac, :timestamp, :locale, :protocol, :return_to]
186
+ request.path != "/" || sanitized_params.except(*native_params).any?
184
187
  end
185
188
 
186
189
  def fullpage_redirect_to(url)
187
190
  if ShopifyApp.configuration.embedded_app?
188
- render('shopify_app/shared/redirect', layout: false,
189
- locals: { url: url, current_shopify_domain: current_shopify_domain })
191
+ render(
192
+ "shopify_app/shared/redirect",
193
+ layout: false,
194
+ locals: { url: url, current_shopify_domain: current_shopify_domain },
195
+ )
190
196
  else
191
197
  redirect_to(url)
192
198
  end
@@ -219,6 +225,7 @@ module ShopifyApp
219
225
 
220
226
  def sanitize_shop_param(params)
221
227
  return unless params[:shop].present?
228
+
222
229
  ShopifyApp::Utils.sanitize_shop_domain(params[:shop])
223
230
  end
224
231
 
@@ -255,5 +262,11 @@ module ShopifyApp
255
262
  def user_session_expected?
256
263
  !ShopifyApp.configuration.user_session_repository.blank? && ShopifyApp::SessionRepository.user_storage.present?
257
264
  end
265
+
266
+ def requested_by_javascript?
267
+ request.xhr? ||
268
+ request.media_type == "text/javascript" ||
269
+ request.media_type == "application/javascript"
270
+ end
258
271
  end
259
272
  end
@@ -21,6 +21,7 @@ module ShopifyApp
21
21
 
22
22
  def request_online_tokens?
23
23
  return @per_user_permissions unless @per_user_permissions.nil?
24
+
24
25
  default_request_online_tokens?
25
26
  end
26
27
 
@@ -41,8 +42,9 @@ module ShopifyApp
41
42
  end
42
43
 
43
44
  def default_client_options_site
44
- return '' unless shop_domain.present?
45
- "https://#{shopify_auth_params[:shop]}"
45
+ return "" unless shop_domain.present?
46
+
47
+ "https://#{shop_domain}"
46
48
  end
47
49
 
48
50
  def default_request_online_tokens?
@@ -54,11 +56,11 @@ module ShopifyApp
54
56
  end
55
57
 
56
58
  def shop_domain
57
- request.params['shop'] || (shopify_auth_params && shopify_auth_params['shop'])
59
+ request.params["shop"] || (shopify_auth_params && shopify_auth_params["shop"])
58
60
  end
59
61
 
60
62
  def shopify_auth_params
61
- strategy.session['shopify.omniauth_params']&.with_indifferent_access
63
+ strategy.session["shopify.omniauth_params"]&.with_indifferent_access
62
64
  end
63
65
  end
64
66
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ShopifyApp
4
- VERSION = "1.3.1"
4
+ VERSION = "1.3.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_shopify_app
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hopper Gee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-11 00:00:00.000000000 Z
11
+ date: 2024-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: browser_sniffer