google_sign_in 1.3.0 → 1.3.1

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: 16eb49d978d32c5adbbf335592b9e79c21c3190ac7c84a20c178de66a6e78ace
4
- data.tar.gz: d4b2e3f1e01fc1b2087f47014fd52b8922176c679a799327024fbf98c43651e4
3
+ metadata.gz: dfe05cd0a40d687c9ae015737635dd5eb33cb2f5deb77db5b1f37deb82a661b8
4
+ data.tar.gz: 3e13c0115dd7e72abf34f2f372d5029a45e9c43e6bc990d202e3621edc3646b4
5
5
  SHA512:
6
- metadata.gz: '0389d4328829b546676d7ce5f228ab87d0d1db25abfb1a616b8232b9233d7766520f517c276b933e302e88eaddaf805e7ccb7c36af05a1a328f885f5c563e234'
7
- data.tar.gz: 363d2af3de4f85988a605cfd3ca5ff63b247a572d9d4bf6b6c8e9097f1c00892f8a421b86c710b2cfd6625b716d161cc93c57a375795dc1a05df96509329696b
6
+ metadata.gz: de8d6086555c8e1a4c236c1f9fef9731d49a30d83fbdfae5f545e9b52e0728614c6ba361e37811e8d787b980234712f55a35e1a5d94ac4381eb0ab07071d363d
7
+ data.tar.gz: a1c90d9c4f4542b92afbacab1fa400b699783f8e0108669f76cfa07f37dafe63011d949b9a59b6ce4393c9fdc2ea75d195b412d895e5c3b537720498f5186e44
@@ -9,20 +9,27 @@ module GoogleSignIn
9
9
  QUALIFIED_URL_PATTERN = /\A#{URI::DEFAULT_PARSER.make_regexp}\z/
10
10
 
11
11
  def ensure_same_origin(target, source)
12
- if (target =~ QUALIFIED_URL_PATTERN && origin_of(target) == origin_of(source)) ||
13
- target =~ URI::DEFAULT_PARSER.regexp[:ABS_PATH]
14
- return
12
+ unless uri_same_origin?(target, source) || absolute_path?(target)
13
+ raise Violation, "Redirect target #{target.inspect} does not have same origin as request #{source.inspect}"
15
14
  end
16
-
17
- raise Violation, "Redirect target #{target.inspect} does not have same origin as request (expected #{origin_of(source)})"
18
15
  end
19
16
 
20
17
  private
18
+ def uri_same_origin?(target, source)
19
+ target =~ QUALIFIED_URL_PATTERN && origin_of(target) == origin_of(source)
20
+ rescue ArgumentError, URI::Error
21
+ false
22
+ end
23
+
24
+ def absolute_path?(target)
25
+ target =~ URI::DEFAULT_PARSER.regexp[:ABS_PATH] && URI(target).host.nil? && !target.start_with?("//")
26
+ rescue ArgumentError, URI::Error
27
+ false
28
+ end
29
+
21
30
  def origin_of(url)
22
31
  uri = URI(url)
23
32
  "#{uri.scheme}://#{uri.host}:#{uri.port}"
24
- rescue ArgumentError
25
- nil
26
33
  end
27
34
  end
28
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_sign_in
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson