ruby_native 0.1.5 → 0.1.7

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: aa4462855e62841b90cda69ebd6fd10e6286d61d6432f1bf4faf601a6a691daf
4
- data.tar.gz: 3420d0c6584aa8da8e71c96918576cfbf9a298cbb7de9b3e666114674eba5137
3
+ metadata.gz: eddde0de797e27e33325a23bffdcbb2e12c0488f4560cfaa0178026ffa0dfcea
4
+ data.tar.gz: ec4ac586194bddccedc3cc73093a79a450370d3587ce8f28eff4ecfcf81ec0ec
5
5
  SHA512:
6
- metadata.gz: 2388cb1e1a48d7980cefa1e5d59647c655c04b17d957fc3d47bd2c6d80a79c63d012290e2649d7f3c7e738caaa7755391b2d6ad9c7303051544e566e25609d04
7
- data.tar.gz: d63ea8c05fb937ea8b2f28d874467824a68609006bca637ab7a05ebb7e72a5cb2130e98613972cf3af330ae8947ba7c14d08687a47172f90ced7c06fa006beef
6
+ metadata.gz: 45c5cc73aa71badca636536a6442b92c9c06657a039dfd846f960c91b52e9be5ca29c43625b3e245fd0e179780bc0964fe743c4a55088b6debc1a6e76a62d288
7
+ data.tar.gz: 27146b84641d802cdb506a44a965f5d4d1274501b25a5611d3ab6af6e950b5ac2ffffd5ad0549d4013f356301280c8a085e37a4c4424eb4c97226f0fee0161cf
@@ -0,0 +1,8 @@
1
+ module RubyNative
2
+ class NativeVersion < Gem::Version
3
+ def <=>(other)
4
+ other = self.class.new(other) if other.is_a?(String)
5
+ super
6
+ end
7
+ end
8
+ end
@@ -15,6 +15,7 @@ module RubyNative
15
15
 
16
16
  if started_oauth && callback_scheme.present? && redirect?(status)
17
17
  Rails.logger.debug { "[RubyNative] OAuth started for #{request.path}, setting tracking cookie" }
18
+ relax_cookie_samesite!(headers)
18
19
  set_cookie(headers, callback_scheme)
19
20
  end
20
21
 
@@ -76,8 +77,8 @@ module RubyNative
76
77
  value: signed,
77
78
  path: "/",
78
79
  httponly: true,
79
- secure: Rails.env.production?,
80
- same_site: :lax,
80
+ secure: true,
81
+ same_site: :none,
81
82
  max_age: 300
82
83
  })
83
84
  end
@@ -102,6 +103,23 @@ module RubyNative
102
103
  )
103
104
  end
104
105
 
106
+ # Apple Sign In uses form_post (a cross-origin POST callback).
107
+ # SameSite=Lax cookies are not sent on cross-origin POSTs, which
108
+ # breaks OmniAuth's state verification. Relax existing cookies
109
+ # to SameSite=None so the session cookie survives Apple's callback.
110
+ def relax_cookie_samesite!(headers)
111
+ raw = headers["set-cookie"]
112
+ return unless raw
113
+
114
+ cookies = raw.is_a?(Array) ? raw : raw.split("\n")
115
+ headers["set-cookie"] = cookies.map { |cookie|
116
+ next cookie unless cookie.match?(/SameSite=Lax/i)
117
+ cookie.gsub(/SameSite=Lax/i, "SameSite=None").then { |c|
118
+ c.include?("Secure") ? c : "#{c}; Secure"
119
+ }
120
+ }.join("\n")
121
+ end
122
+
105
123
  def redirect?(status)
106
124
  (300..399).cover?(status)
107
125
  end
@@ -1,3 +1,3 @@
1
1
  module RubyNative
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.7"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_native
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Masilotti
@@ -74,6 +74,7 @@ files:
74
74
  - lib/ruby_native/engine.rb
75
75
  - lib/ruby_native/helper.rb
76
76
  - lib/ruby_native/native_detection.rb
77
+ - lib/ruby_native/native_version.rb
77
78
  - lib/ruby_native/oauth_middleware.rb
78
79
  - lib/ruby_native/version.rb
79
80
  homepage: https://github.com/Ruby-Native/gem