omniauth-fishbrain 0.10.0 → 0.11.0

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: 70b077fd97606f323245d0180a5a66e5ddb0dc92ec0670147242884bdc930319
4
- data.tar.gz: e483cf58669ab9991b5f59fb5c89c918cebae4572eacec67fcf1b0a145eda569
3
+ metadata.gz: aeee9cc6e162c2f7af87e9e888e5ee6512e3b0733db7e2ea62b36edc3e18f355
4
+ data.tar.gz: c7e1e870026535bab621a989e3108065b87361b700b819117fc43422f247407b
5
5
  SHA512:
6
- metadata.gz: 4062fe761e149af6926a3757405da9769e86be530ad68f97f8b26343a518872bff85c36ca771bb0c3b9da40b67816b24e3ef1225bf3bc0e02c51bc943400dc09
7
- data.tar.gz: b284b8dba51dc78102513bc6d3746c0ffac410a174f2a7700c00280610067ac6cc272edeb644e6e0500c789e3e6da88b0c696e26d5127cd4736296ea2ba11de7
6
+ metadata.gz: 1581f15f1c259c32b65918776be71fecb61d8a301684168c6c203671f19fb36f13f246135e940b733412eec27afeb9cb065c70412323505792cd1dd8f1848bf8
7
+ data.tar.gz: f2cb803f3e831ee2607c7ba93ac089d48fdfe3d5a3ec39c17bbfa46b5904862dc5d82c75984a6fcac60cd17569cb485a5206706348285133f1046fb88974dd24
data/README.markdown CHANGED
@@ -1,10 +1,12 @@
1
1
  # OmniAuth Fishbrain
2
2
 
3
+ ![](https://github.com/omniauth/omniauth-github/workflows/Ruby/badge.svg?branch=master)
4
+
3
5
  This gem provides two OmniAuth strategies for Fishbrain.
4
6
 
5
- 1. The `fishbrain` strategy is a standard Omniauth OAuth2 strategy for signing up and signing in
6
- 2. The `fishbrain_id` strategy is intended for sharing a user's identity between services, typically from mobile app to
7
- server
7
+ 1. The `fishbrain` strategy is a standard OmniAuth OAuth2 strategy.
8
+ 2. The `fishbrain_id` strategy is intended for sharing identities between
9
+ services.
8
10
 
9
11
  ## Installation
10
12
 
@@ -16,18 +18,18 @@ gem 'omniauth-fishbrain'
16
18
 
17
19
  In production environments:
18
20
 
19
- ```
21
+ ```ruby
20
22
  use OmniAuth::Builder do
21
- provider :fishbrain, ENV.fetch('FISHBRAIN_CLIENT_ID'), ENV.fetch('FISHBRAIN_CLIENT_SECRET')
23
+ provider :fishbrain, ENV['FISHBRAIN_CLIENT_ID'], ENV['FISHBRAIN_CLIENT_SECRET']
22
24
  provider :fishbrain_id
23
25
  end
24
26
  ```
25
27
 
26
28
  In development/test/staging environments:
27
29
 
28
- ```
30
+ ```ruby
29
31
  use OmniAuth::Builder do
30
- provider :fishbrain, ENV.fetch('FISHBRAIN_CLIENT_ID'), ENV.fetch('FISHBRAIN_CLIENT_SECRET'),
32
+ provider :fishbrain, ENV['FISHBRAIN_CLIENT_ID'], ENV['FISHBRAIN_CLIENT_SECRET'],
31
33
  user_pool_id: 'eu-west-1_K2uP41DlP',
32
34
  client_options: {
33
35
  site: 'https://accounts-staging.fishbrain.com',
@@ -38,7 +40,7 @@ end
38
40
 
39
41
  `path_prefix` is supported too:
40
42
 
41
- ```
43
+ ```ruby
42
44
  use OmniAuth::Builder do
43
45
  ...
44
46
 
@@ -46,9 +48,8 @@ use OmniAuth::Builder do
46
48
  end
47
49
  ```
48
50
 
49
-
50
51
  See [`/examples`](examples) for full example using Sinatra.
51
52
 
52
- ## LICENSE
53
+ ## License
53
54
 
54
55
  [MIT](LICENSE)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OmniAuth
4
4
  module Fishbrain
5
- VERSION = '0.10.0'
5
+ VERSION = '0.11.0'
6
6
  end
7
7
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'date'
4
+ require 'json'
5
+
6
+ module OmniAuth
7
+ module Fishbrain
8
+ module PremiumStatus
9
+ def premium_status
10
+ return {} unless id_token['premium_status']
11
+
12
+ JSON.parse id_token['premium_status']
13
+ rescue JSON::ParserError
14
+ {}
15
+ end
16
+
17
+ def premium?
18
+ DateTime.rfc3339(premium_status['premium_end_date']) > DateTime.now
19
+ rescue ArgumentError
20
+ # if format was wrong
21
+ false
22
+ end
23
+ end
24
+ end
25
+ end
@@ -2,11 +2,13 @@
2
2
 
3
3
  require 'omniauth-oauth2'
4
4
  require 'omniauth/fishbrain/verifies_id_token'
5
+ require 'omniauth/fishbrain/premium_status'
5
6
 
6
7
  module OmniAuth
7
8
  module Strategies
8
9
  class Fishbrain < OmniAuth::Strategies::OAuth2
9
10
  include OmniAuth::Fishbrain::VerifiesIdToken
11
+ include OmniAuth::Fishbrain::PremiumStatus
10
12
 
11
13
  option :name, 'fishbrain'
12
14
  option :client_options, site: 'https://accounts.fishbrain.com',
@@ -42,7 +44,11 @@ module OmniAuth
42
44
  end
43
45
 
44
46
  extra do
45
- { raw_info: id_token.reject { |key| %w[iss aud exp iat token_use].include?(key) } }
47
+ {
48
+ raw_info: id_token.reject { |key| %w[iss aud exp iat token_use].include?(key) },
49
+ premium_status: premium_status,
50
+ is_premium: premium?,
51
+ }
46
52
  end
47
53
 
48
54
  private
@@ -1,12 +1,14 @@
1
1
  # frozen_string_literal:true
2
2
 
3
3
  require 'omniauth/fishbrain/verifies_id_token'
4
+ require 'omniauth/fishbrain/premium_status'
4
5
 
5
6
  module OmniAuth
6
7
  module Strategies
7
8
  class FishbrainId
8
9
  include OmniAuth::Strategy
9
10
  include OmniAuth::Fishbrain::VerifiesIdToken
11
+ include OmniAuth::Fishbrain::PremiumStatus
10
12
 
11
13
  option :name, 'fishbrain_id'
12
14
  option :user_pool_id, 'eu-west-1_5r0WbR8OH'
@@ -27,7 +29,11 @@ module OmniAuth
27
29
  end
28
30
 
29
31
  extra do
30
- { raw_info: id_token.reject { |key| %w[iss aud exp iat token_use].include?(key) } }
32
+ {
33
+ raw_info: id_token.reject { |key| %w[iss aud exp iat token_use].include?(key) },
34
+ premium_status: premium_status,
35
+ is_premium: premium?,
36
+ }
31
37
  end
32
38
 
33
39
  def callback_phase
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-fishbrain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Dalen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-02-17 00:00:00.000000000 Z
12
+ date: 2020-02-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jwt
@@ -51,6 +51,7 @@ files:
51
51
  - README.markdown
52
52
  - lib/omniauth-fishbrain.rb
53
53
  - lib/omniauth-fishbrain/version.rb
54
+ - lib/omniauth/fishbrain/premium_status.rb
54
55
  - lib/omniauth/fishbrain/verifies_id_token.rb
55
56
  - lib/omniauth/strategies/fishbrain.rb
56
57
  - lib/omniauth/strategies/fishbrain_id.rb
@@ -73,7 +74,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
74
  - !ruby/object:Gem::Version
74
75
  version: '0'
75
76
  requirements: []
76
- rubygems_version: 3.0.3
77
+ rubyforge_project:
78
+ rubygems_version: 2.7.6
77
79
  signing_key:
78
80
  specification_version: 4
79
81
  summary: OmniAuth strategy for Fishbrain