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 +4 -4
- data/lib/ruby_native/native_version.rb +8 -0
- data/lib/ruby_native/oauth_middleware.rb +20 -2
- data/lib/ruby_native/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eddde0de797e27e33325a23bffdcbb2e12c0488f4560cfaa0178026ffa0dfcea
|
|
4
|
+
data.tar.gz: ec4ac586194bddccedc3cc73093a79a450370d3587ce8f28eff4ecfcf81ec0ec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 45c5cc73aa71badca636536a6442b92c9c06657a039dfd846f960c91b52e9be5ca29c43625b3e245fd0e179780bc0964fe743c4a55088b6debc1a6e76a62d288
|
|
7
|
+
data.tar.gz: 27146b84641d802cdb506a44a965f5d4d1274501b25a5611d3ab6af6e950b5ac2ffffd5ad0549d4013f356301280c8a085e37a4c4424eb4c97226f0fee0161cf
|
|
@@ -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:
|
|
80
|
-
same_site: :
|
|
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
|
data/lib/ruby_native/version.rb
CHANGED
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.
|
|
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
|