ruby_shopify_app 1.3.1 → 1.3.2

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: cc9eee8b1899a69aa9a93c647372ba6355f5631ab6abf0b4e96a050d91d3f3a6
4
+ data.tar.gz: e997285d216f48ba365ee9e7eb91add73e38c7a831356842f6d4053e0787ff70
5
5
  SHA512:
6
- metadata.gz: 3ca8751b1d52328e68c609cba8184ae0ea035b74a0f27ab5c97a15cc01207cce6846ab5ae71db8510165e8651eb4abe16572c76642a5487cec1234276976f0e6
7
- data.tar.gz: 13f1848f49f793540f6f3b670466be3b7f4d6e728499810e080088514c8244aa25053e24cc459a27be3e937a39da3f3122d371997c4d24fdd451774e813ea46b
6
+ metadata.gz: fb7655a30f1b2b66d496deb06be8ad7ea473de55ed0968afd036385666cdb51c3578abda2045ecce5fd8d387d7d4c3b15fe61b2207b4595cc65ed8490e3d5848
7
+ data.tar.gz: 0501dc206c10c78f02f1406d846837f8587fb61b830e209ff0d1caccccec7e053fd1615e5e8fbb259cac6e5d992c103e894203be390a1d07e09f0e7677e36961
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ 1.3.2
2
+ -----
3
+
4
+ * better helper to determine if JS requested action
5
+
1
6
  1.3.1
2
7
  -----
3
8
 
@@ -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
@@ -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.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
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.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hopper Gee