zaikio-oauth_client 0.3.7 → 0.4.2

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: 70df4bc301aecf7787f230307e05d94a5df5e68bc53c631bd4923e007f1c4882
4
- data.tar.gz: e19b1250fed256fd761c47b08d7b436311547559834b6939202d0bf2b4d35f92
3
+ metadata.gz: eb774c96ee88f324e6da5b8ece141a110f306d5a38506ab33bb1c44b4fa6ca16
4
+ data.tar.gz: 6bf71d03fac23bca3c96fe38c7b7ad84d0f609dc98a4cc673ab44e83dfff001f
5
5
  SHA512:
6
- metadata.gz: 621cbc8f24b5db20feebc5398cba2a444cab5a2d9652e44ed53675b889b7033df68410302885781aa7714626ed3f325384e9f6ca80fd21025b2490f6310d4060
7
- data.tar.gz: 728955826c11c5f9d955ad03f1d2c3d9631f023d07aa84fbe9f06583392fb87a9d5850e3195381100aacf4262d94dec725018e3aa9783e862a5a546486aa7ae5
6
+ metadata.gz: 878a92cd495fb07fa942a0e100862586a42c262bafdd9afa64d9cee76efd2b3a85d833b4c92bda916f66afa97c6c7cfe9090ddee2cdf9834a7deae3c22bb0bc3
7
+ data.tar.gz: 72084e3c353aeed81b6dbc7cee0eb2ae44ab5140c5a55319dc4933e35944881d66a98fa329230d3a3b902e98701f1dc9de6e05539e9b1f8917720c5056f21a3c
data/README.md CHANGED
@@ -26,6 +26,8 @@ This will create the tables:
26
26
 
27
27
  ### 2. Mount routes
28
28
 
29
+ Add this to `config/routes.rb`:
30
+
29
31
  ```rb
30
32
  mount Zaikio::OAuthClient::Engine => "/zaikio"
31
33
  ```
@@ -65,6 +67,28 @@ Zaikio::OAuthClient.configure do |config|
65
67
  end
66
68
  ```
67
69
 
70
+
71
+ ### 4. Clean up outdated access tokens (recommended)
72
+
73
+ To avoid keeping all expired oath and refresh tokens in your database, we recommend to implement their scheduled deletion. We recommend therefore to use a schedule gems such as [sidekiq](https://github.com/mperham/sidekiq) and [sidekiq-scheduler](https://github.com/moove-it/sidekiq-scheduler).
74
+
75
+ Simply add the following to your Gemfile:
76
+
77
+ ```rb
78
+ gem "sidekiq"
79
+ gem "sidekiq-scheduler"
80
+ ```
81
+ Then run `bundle install`.
82
+
83
+ Configure sidekiq scheduler in `config/sidekiq.yml`:
84
+ ```yaml
85
+ :schedule:
86
+ cleanup_acces_tokens_job:
87
+ cron: '0 3 * * *' # This will delete all expired tokens every day at 3am.
88
+ class: 'Zaikio::CleanupAccessTokensJob'
89
+ ```
90
+
91
+
68
92
  ## Usage
69
93
 
70
94
  ### OAuth Flow
@@ -210,7 +234,7 @@ If you use the provided OAuth credentials from above and test this against the S
210
234
 
211
235
  **Make sure you have the dummy app running locally to validate your changes.**
212
236
 
213
- Make your changes and adjust `version.rb`.
237
+ Make your changes and adjust `version.rb`. Please make sure to update `CHANGELOG.md`.
214
238
 
215
239
  **To push a new release:**
216
240
 
@@ -0,0 +1,7 @@
1
+ module Zaikio
2
+ class CleanupAccessTokensJob < ApplicationJob
3
+ def perform
4
+ Zaikio::AccessToken.with_invalid_refresh_token.delete_all
5
+ end
6
+ end
7
+ end
@@ -26,21 +26,24 @@ module Zaikio
26
26
  # Scopes
27
27
  scope :valid, lambda {
28
28
  where("expires_at > :now", now: Time.current)
29
- .where.not(id: Zaikio::JWTAuth.blacklisted_token_ids)
29
+ .where.not(id: Zaikio::JWTAuth.revoked_token_ids)
30
+ }
31
+ scope :with_invalid_refresh_token, lambda {
32
+ where("created_at <= ?", Time.current - Zaikio::AccessToken.refresh_token_valid_for)
30
33
  }
31
34
  scope :valid_refresh, lambda {
32
35
  where("expires_at <= :now AND created_at > :created_at_max",
33
36
  now: Time.current,
34
37
  created_at_max: Time.current - refresh_token_valid_for)
35
38
  .where("refresh_token IS NOT NULL")
36
- .where.not(id: Zaikio::JWTAuth.blacklisted_token_ids)
39
+ .where.not(id: Zaikio::JWTAuth.revoked_token_ids)
37
40
  }
38
41
  scope :by_bearer, lambda { |bearer_type: "Person", bearer_id:, scopes: []|
39
42
  where(bearer_type: bearer_type, bearer_id: bearer_id)
40
43
  .where("scopes @> ARRAY[?]::varchar[]", scopes)
41
44
  }
42
45
  scope :usable, lambda { |options|
43
- by_bearer(options).valid.or(by_bearer(options).valid_refresh)
46
+ by_bearer(**options).valid.or(by_bearer(**options).valid_refresh)
44
47
  .order(expires_at: :desc)
45
48
  }
46
49
 
@@ -5,11 +5,11 @@ module Zaikio
5
5
  module OAuthClient
6
6
  class Configuration
7
7
  HOSTS = {
8
- development: "http://directory.zaikio.test",
9
- test: "http://directory.zaikio.test",
10
- staging: "https://directory.staging.zaikio.com",
11
- sandbox: "https://directory.sandbox.zaikio.com",
12
- production: "https://directory.zaikio.com"
8
+ development: "http://hub.zaikio.test",
9
+ test: "http://hub.zaikio.test",
10
+ staging: "https://hub.staging.zaikio.com",
11
+ sandbox: "https://hub.sandbox.zaikio.com",
12
+ production: "https://hub.zaikio.com"
13
13
  }.freeze
14
14
 
15
15
  attr_accessor :host
@@ -1,5 +1,5 @@
1
1
  module Zaikio
2
2
  module OAuthClient
3
- VERSION = "0.3.7".freeze
3
+ VERSION = "0.4.2".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zaikio-oauth_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zaikio GmbH
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-28 00:00:00.000000000 Z
11
+ date: 2021-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -42,16 +42,22 @@ dependencies:
42
42
  name: zaikio-jwt_auth
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 0.2.1
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: 0.5.0
48
51
  type: :runtime
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
- - - "~>"
55
+ - - ">="
53
56
  - !ruby/object:Gem::Version
54
57
  version: 0.2.1
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: 0.5.0
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: pg
57
63
  requirement: !ruby/object:Gem::Requirement
@@ -98,6 +104,7 @@ files:
98
104
  - app/controllers/zaikio/oauth_client/sessions_controller.rb
99
105
  - app/helpers/zaikio/application_helper.rb
100
106
  - app/jobs/zaikio/application_job.rb
107
+ - app/jobs/zaikio/cleanup_access_tokens_job.rb
101
108
  - app/models/zaikio/access_token.rb
102
109
  - config/initializers/inflections.rb
103
110
  - config/locales/en.yml
@@ -112,11 +119,12 @@ files:
112
119
  - lib/zaikio/oauth_client/engine.rb
113
120
  - lib/zaikio/oauth_client/test_helper.rb
114
121
  - lib/zaikio/oauth_client/version.rb
115
- homepage: https://crispymtn.com
122
+ homepage: https://www.zaikio.com
116
123
  licenses:
117
124
  - MIT
118
- metadata: {}
119
- post_install_message:
125
+ metadata:
126
+ changelog_uri: https://github.com/zaikio/zaikio-oauth_client/blob/master/CHANGELOG.md
127
+ post_install_message:
120
128
  rdoc_options: []
121
129
  require_paths:
122
130
  - lib
@@ -131,8 +139,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
139
  - !ruby/object:Gem::Version
132
140
  version: '0'
133
141
  requirements: []
134
- rubygems_version: 3.1.2
135
- signing_key:
142
+ rubygems_version: 3.2.3
143
+ signing_key:
136
144
  specification_version: 4
137
145
  summary: Zaikio Platform Connectivity
138
146
  test_files: []