oauth2 2.0.5 → 2.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b016b4a0d35d5e6b17d60c9417f7a456b78a38462120fff7d68021235dee6f6d
4
- data.tar.gz: 5627dc50a7dfc395f226a1209606aa63d1c8c9642ba6aba390f5ba3605567b33
3
+ metadata.gz: 6ca4e3435d4b69bcdf5607cf41d9b5f67b3671160d860cda0e8a66fdc6ca9ea7
4
+ data.tar.gz: 74170cea4731366ce12134db250ca23b937791a349b3cb62c6833a729d8964fa
5
5
  SHA512:
6
- metadata.gz: cbbfb987df74ec80833a13f2d7ae5fc090af533cfe3e0ce7146ed3f1dcec45159a8ac4447c0aacbc5ad2c9e8490d76a9c227dcb857b9fc2cc4a5b6b6634d1b41
7
- data.tar.gz: ebf819a7fcfb1c66041bb01b46f023fcfd8cb06f1762ff938795faab71e4871d00986899c592465e8424ebd40eff1e90c6a85a77e4717f4211a07ec41a148144
6
+ metadata.gz: '02886a1ab24fe6cc0f2a0624646fd07b74f1151540e4a79c2a7b50b4fa9d051bdc801d22413ee1c815e0df95f8c20185e98a8edce6e8909b276d0f3be3d3e5e3'
7
+ data.tar.gz: c23909dd4d2502a9ecd0e7ea8832d9611542af282230bd7c7b126bf76394a80acd14e8cf73be0362ea90875c63192cac4102878cfafab5cfc0419adfeb236a7d
data/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
4
4
  The format (since v2) is based on [Keep a Changelog v1](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning v2](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [2.0.6] - 2022-07-13
8
+ ### Fixed
9
+ - [#624](https://github.com/oauth-xx/oauth2/pull/624) - Fixes a [regression](https://github.com/oauth-xx/oauth2/pull/623) in v2.0.5, where an error would be raised in refresh_token flows due to (legitimate) lack of access_token (@pboling)
10
+
7
11
  ## [2.0.5] - 2022-07-07
8
12
  ### Fixed
9
13
  - [#620](https://github.com/oauth-xx/oauth2/pull/620) - Documentation improvements, to help with upgrading (@swanson)
@@ -292,5 +296,6 @@ and this project adheres to [Semantic Versioning v2](https://semver.org/spec/v2.
292
296
  [2.0.3]: https://github.com/oauth-xx/oauth2/compare/v2.0.2...v2.0.3
293
297
  [2.0.4]: https://github.com/oauth-xx/oauth2/compare/v2.0.3...v2.0.4
294
298
  [2.0.5]: https://github.com/oauth-xx/oauth2/compare/v2.0.4...v2.0.5
295
- [Unreleased]: https://github.com/oauth-xx/oauth2/compare/v2.0.5...HEAD
299
+ [2.0.6]: https://github.com/oauth-xx/oauth2/compare/v2.0.5...v2.0.6
300
+ [Unreleased]: https://github.com/oauth-xx/oauth2/compare/v2.0.6...HEAD
296
301
  [gemfiles/readme]: gemfiles/README.md
data/README.md CHANGED
@@ -32,6 +32,8 @@ See the sibling `oauth` gem for OAuth 1.0 implementations in Ruby.
32
32
 
33
33
  | Version | Release Date | Readme |
34
34
  |---------|--------------|----------------------------------------------------------|
35
+ | 2.0.6 | 2022-07-13 | https://github.com/oauth-xx/oauth2/blob/v2.0.6/README.md |
36
+ | 2.0.5 | 2022-07-07 | https://github.com/oauth-xx/oauth2/blob/v2.0.5/README.md |
35
37
  | 2.0.4 | 2022-07-01 | https://github.com/oauth-xx/oauth2/blob/v2.0.4/README.md |
36
38
  | 2.0.3 | 2022-06-28 | https://github.com/oauth-xx/oauth2/blob/v2.0.3/README.md |
37
39
  | 2.0.2 | 2022-06-24 | https://github.com/oauth-xx/oauth2/blob/v2.0.2/README.md |
@@ -143,8 +145,8 @@ The link tokens in the following sections should be kept ordered by the row and
143
145
  [🖐prs-o-img]: https://img.shields.io/github/issues-pr/oauth-xx/oauth2
144
146
  [🧮prs-c]: https://github.com/oauth-xx/oauth2/pulls?q=is%3Apr+is%3Aclosed
145
147
  [🧮prs-c-img]: https://img.shields.io/github/issues-pr-closed/oauth-xx/oauth2
146
- [📗next♻️]: https://github.com/oauth-xx/oauth2/milestone/15
147
- [📗next-img♻️]: https://img.shields.io/github/milestones/progress/oauth-xx/oauth2/15?label=Next%20Version
148
+ [📗next♻️]: https://github.com/oauth-xx/oauth2/milestone/2
149
+ [📗next-img♻️]: https://img.shields.io/github/milestones/progress/oauth-xx/oauth2/2?label=Next%20Version
148
150
 
149
151
  <!-- 3️⃣ maintenance & linting -->
150
152
  [⛳cclim-maint]: https://codeclimate.com/github/oauth-xx/oauth2/maintainability
@@ -2,6 +2,10 @@
2
2
 
3
3
  module OAuth2
4
4
  class AccessToken # rubocop:disable Metrics/ClassLength
5
+ TOKEN_KEYS_STR = %w[access_token id_token token accessToken idToken].freeze
6
+ TOKEN_KEYS_SYM = %i[access_token id_token token accessToken idToken].freeze
7
+ TOKEN_KEY_LOOKUP = TOKEN_KEYS_STR + TOKEN_KEYS_SYM
8
+
5
9
  attr_reader :client, :token, :expires_in, :expires_at, :expires_latency, :params
6
10
  attr_accessor :options, :refresh_token, :response
7
11
 
@@ -13,13 +17,13 @@ module OAuth2
13
17
  # @option hash [String] 'access_token', 'id_token', 'token', :access_token, :id_token, or :token the access token
14
18
  # @return [AccessToken] the initialized AccessToken
15
19
  def from_hash(client, hash)
16
- hash = hash.dup
17
- token = hash.delete('access_token') || hash.delete(:access_token) ||
18
- hash.delete('id_token') || hash.delete(:id_token) ||
19
- hash.delete('token') || hash.delete(:token) ||
20
- hash.delete('accessToken') || hash.delete(:accessToken) ||
21
- hash.delete('idToken') || hash.delete(:idToken)
22
- new(client, token, hash)
20
+ fresh = hash.dup
21
+ supported_keys = fresh.keys & TOKEN_KEY_LOOKUP
22
+ key = supported_keys[0]
23
+ # Having too many is sus, and may lead to bugs. Having none is fine (e.g. refresh flow doesn't need a token).
24
+ warn("OAuth2::AccessToken.from_hash: `hash` contained more than one 'token' key (#{supported_keys}); using #{key.inspect}.") if supported_keys.length > 1
25
+ token = fresh.delete(key)
26
+ new(client, token, fresh)
23
27
  end
24
28
 
25
29
  # Initializes an AccessToken from a key/value application/x-www-form-urlencoded string
@@ -35,7 +39,7 @@ module OAuth2
35
39
  # Initialize an AccessToken
36
40
  #
37
41
  # @param [Client] client the OAuth2::Client instance
38
- # @param [String] token the Access Token value
42
+ # @param [String] token the Access Token value (optional, may not be used in refresh flows)
39
43
  # @param [Hash] opts the options to create the Access Token with
40
44
  # @option opts [String] :refresh_token (nil) the refresh_token value
41
45
  # @option opts [FixNum, String] :expires_in (nil) the number of seconds in which the AccessToken will expire
@@ -50,14 +54,19 @@ module OAuth2
50
54
  @client = client
51
55
  @token = token.to_s
52
56
 
53
- if @client.options[:raise_errors] && (@token.nil? || @token.empty?)
54
- error = Error.new(opts)
55
- raise(error)
56
- end
57
57
  opts = opts.dup
58
58
  %i[refresh_token expires_in expires_at expires_latency].each do |arg|
59
59
  instance_variable_set("@#{arg}", opts.delete(arg) || opts.delete(arg.to_s))
60
60
  end
61
+ no_tokens = (@token.nil? || @token.empty?) && (@refresh_token.nil? || @refresh_token.empty?)
62
+ if no_tokens
63
+ if @client.options[:raise_errors]
64
+ error = Error.new(opts)
65
+ raise(error)
66
+ else
67
+ warn('OAuth2::AccessToken has no token')
68
+ end
69
+ end
61
70
  @expires_in ||= opts.delete('expires')
62
71
  @expires_in &&= @expires_in.to_i
63
72
  @expires_at &&= convert_expires_at(@expires_at)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OAuth2
4
4
  module Version
5
- VERSION = '2.0.5'.freeze
5
+ VERSION = '2.0.6'.freeze
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth2
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 2.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Boling
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2022-07-07 00:00:00.000000000 Z
13
+ date: 2022-07-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faraday
@@ -307,10 +307,10 @@ licenses:
307
307
  - MIT
308
308
  metadata:
309
309
  homepage_uri: https://github.com/oauth-xx/oauth2
310
- source_code_uri: https://github.com/oauth-xx/oauth2/tree/v2.0.5
311
- changelog_uri: https://github.com/oauth-xx/oauth2/blob/v2.0.5/CHANGELOG.md
310
+ source_code_uri: https://github.com/oauth-xx/oauth2/tree/v2.0.6
311
+ changelog_uri: https://github.com/oauth-xx/oauth2/blob/v2.0.6/CHANGELOG.md
312
312
  bug_tracker_uri: https://github.com/oauth-xx/oauth2/issues
313
- documentation_uri: https://www.rubydoc.info/gems/oauth2/2.0.5
313
+ documentation_uri: https://www.rubydoc.info/gems/oauth2/2.0.6
314
314
  wiki_uri: https://github.com/oauth-xx/oauth2/wiki
315
315
  rubygems_mfa_required: 'true'
316
316
  post_install_message: |2+