doorkeeper-mongodb 5.4.0 → 5.5.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: 43ffb322969c5c4a6eac7e397e0198423fecfda21d73fa7c239f04bab34650c2
4
- data.tar.gz: 7cc3e393c6192a4bd7fd7ba5c7d64061b1163b5c5f4d9468587b2f03d7bdfc2a
3
+ metadata.gz: 31397e2cb87670cde0c3c5eb8bd487a864e14c11dfcedc868c5fd1e2b4683e87
4
+ data.tar.gz: 534a2ce1dd42bc361839b31e96a54491b2142b1366a46590a719ee071b835b36
5
5
  SHA512:
6
- metadata.gz: 68e449f5f8746d4537e81ddf4848b8c87d0dc610e9fe89f0a44a12718b7c26e057a7322929b8a053f5d8fce4e41e234ecc7c73d501e692c47acef99668892f74
7
- data.tar.gz: 591b86f5d37eb1474d42d4efe14fc2ff03082724c18893eb2133d8764e57f25b734ea17dce636271311cffa87022147d52a96c0f869e499bbd5e83707dfb71ea
6
+ metadata.gz: 2debfbe47ca1743bae09ae241245438a56454b4850cf6d833c337fe8e1e79a21e396fbaaafd52ec7eb14c49a7342c573f45d4e2feac4ca8ebdb2cddb285dfadb
7
+ data.tar.gz: 5a74a5c8666980b4af1c88427ab692d2aecb049fe918605558223eee48a3b9df1403ab13a3b3448c8645804ec46c67966f0e07e0925bb99ce92fb9ca1cf4830d
data/README.md CHANGED
@@ -38,7 +38,7 @@ Set the ORM configuration:
38
38
 
39
39
  ```ruby
40
40
  Doorkeeper.configure do
41
- orm :mongoid8 # or any other version of mongoid
41
+ orm :mongoid9 # or any other version of mongoid
42
42
  end
43
43
  ```
44
44
 
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Doorkeeper
4
+ class AccessGrant
5
+ include Mongoid::Document
6
+ include Mongoid::Timestamps
7
+
8
+ include DoorkeeperMongodb::Compatible
9
+
10
+ include DoorkeeperMongodb::Shared::Scopes
11
+ include DoorkeeperMongodb::Mixins::Mongoid::AccessGrantMixin
12
+
13
+ store_in collection: :oauth_access_grants
14
+
15
+ field :resource_owner_id, type: BSON::ObjectId
16
+ field :resource_owner_type, type: String
17
+ field :token, type: String
18
+ field :expires_in, type: Integer
19
+ field :redirect_uri, type: String
20
+ field :revoked_at, type: DateTime
21
+ field :code_challenge, type: String
22
+ field :code_challenge_method, type: String
23
+
24
+ index({ token: 1 }, unique: true)
25
+ end
26
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Doorkeeper
4
+ class AccessToken
5
+ include Mongoid::Document
6
+ include Mongoid::Timestamps
7
+
8
+ include DoorkeeperMongodb::Compatible
9
+
10
+ include DoorkeeperMongodb::Shared::Scopes
11
+ include DoorkeeperMongodb::Mixins::Mongoid::AccessTokenMixin
12
+
13
+ store_in collection: :oauth_access_tokens
14
+
15
+ field :resource_owner_id, type: BSON::ObjectId
16
+ field :resource_owner_type, type: String
17
+ field :token, type: String
18
+ field :refresh_token, type: String
19
+ field :previous_refresh_token, type: String
20
+ field :expires_in, type: Integer
21
+ field :revoked_at, type: DateTime
22
+
23
+ index({ token: 1 }, unique: true)
24
+ index({ refresh_token: 1 }, unique: true, sparse: true)
25
+
26
+ def self.order_method
27
+ :order_by
28
+ end
29
+
30
+ def self.refresh_token_revoked_on_use?
31
+ fields.collect { |field| field[0] }.include?("previous_refresh_token")
32
+ end
33
+
34
+ def self.created_at_desc
35
+ %i[created_at desc]
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Doorkeeper
4
+ class Application
5
+ include Mongoid::Document
6
+ include Mongoid::Timestamps
7
+
8
+ include DoorkeeperMongodb::Compatible
9
+
10
+ include DoorkeeperMongodb::Shared::Scopes
11
+ include DoorkeeperMongodb::Mixins::Mongoid::ApplicationMixin
12
+
13
+ store_in collection: :oauth_applications
14
+
15
+ field :name, type: String
16
+ field :uid, type: String
17
+ field :secret, type: String
18
+ field :redirect_uri, type: String
19
+ field :confidential, type: Boolean, default: true
20
+
21
+ index({ uid: 1 }, unique: true)
22
+
23
+ has_many_opts = {
24
+ class_name: "Doorkeeper::AccessToken",
25
+ }
26
+
27
+ # Doorkeeper 5.3 has custom classes for defining OAuth roles
28
+ if DoorkeeperMongodb.doorkeeper_version?(5, 3)
29
+ has_many_opts[:class_name] = Doorkeeper.config.access_token_class
30
+ end
31
+
32
+ has_many :authorized_tokens, has_many_opts
33
+
34
+ def self.authorized_for(resource_owner)
35
+ ids = AccessToken.where(
36
+ resource_owner_id: resource_owner.id,
37
+ revoked_at: nil,
38
+ ).map(&:application_id)
39
+
40
+ find(ids)
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Doorkeeper
4
+ module Orm
5
+ module Mongoid9
6
+ class StaleRecordsCleaner
7
+ include DoorkeeperMongodb::Mixins::Mongoid::StaleRecordsCleanerMixin
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/lazy_load_hooks"
4
+
5
+ module Doorkeeper
6
+ module Orm
7
+ module Mongoid9
8
+ def self.run_hooks
9
+ lazy_load do
10
+ require "doorkeeper/orm/mongoid9/access_grant"
11
+ require "doorkeeper/orm/mongoid9/access_token"
12
+ require "doorkeeper/orm/mongoid9/application"
13
+ require "doorkeeper/orm/mongoid9/stale_records_cleaner"
14
+ require "doorkeeper/orm/concerns/mongoid/ownership"
15
+ Doorkeeper::Application.include Doorkeeper::Orm::Concerns::Mongoid::Ownership
16
+ end
17
+ @initialized_hooks = true
18
+ end
19
+
20
+ # @deprecated
21
+ def self.initialize_models!
22
+ return if @initialized_hooks
23
+
24
+ lazy_load do
25
+ require "doorkeeper/orm/mongoid9/access_grant"
26
+ require "doorkeeper/orm/mongoid9/access_token"
27
+ require "doorkeeper/orm/mongoid9/application"
28
+ require "doorkeeper/orm/mongoid9/stale_records_cleaner"
29
+ end
30
+ end
31
+
32
+ # @deprecated
33
+ def self.initialize_application_owner!
34
+ return if @initialized_hooks
35
+
36
+ lazy_load do
37
+ require "doorkeeper/orm/concerns/mongoid/ownership"
38
+
39
+ Doorkeeper::Application.include Doorkeeper::Orm::Concerns::Mongoid::Ownership
40
+ end
41
+ end
42
+
43
+ def self.check_requirements!(_config); end
44
+
45
+ def self.lazy_load(&block)
46
+ ActiveSupport.on_load(:mongoid, {}, &block)
47
+ end
48
+ end
49
+ end
50
+ end
@@ -27,13 +27,17 @@ module DoorkeeperMongodb
27
27
  belongs_to_opts[:class_name] = Doorkeeper.config.application_class
28
28
  end
29
29
 
30
- # optional associations added in Mongoid 6
30
+ # optional associations added in Mongoid 6+
31
31
  belongs_to_opts[:optional] = true if ::Mongoid::VERSION[0].to_i >= 6
32
32
 
33
33
  belongs_to :application, belongs_to_opts
34
34
 
35
35
  if Doorkeeper.configuration.try(:polymorphic_resource_owner?)
36
- belongs_to :resource_owner, polymorphic: true
36
+ opts = { polymorphic: true }
37
+
38
+ opts[:optional] = true if ::Mongoid::VERSION[0].to_i >= 6
39
+
40
+ belongs_to :resource_owner, opts
37
41
  end
38
42
 
39
43
  validates_presence_of :resource_owner_id, :application_id, :token,
@@ -28,7 +28,7 @@ module DoorkeeperMongodb
28
28
  belongs_to_opts[:class_name] = Doorkeeper.config.application_class
29
29
  end
30
30
 
31
- # optional associations added in Mongoid 6
31
+ # optional associations added in Mongoid 6+
32
32
  belongs_to_opts[:optional] = true if ::Mongoid::VERSION[0].to_i >= 6
33
33
 
34
34
  belongs_to :application, belongs_to_opts
@@ -14,10 +14,10 @@ module DoorkeeperMongodb
14
14
  included do
15
15
  has_many_options = {
16
16
  dependent: :delete,
17
-
17
+ inverse_of: :application,
18
18
  }
19
19
 
20
- # Mongoid7 dropped :delete option
20
+ # Mongoid7+ uses :delete_all instead of :delete
21
21
  has_many_options[:dependent] = :delete_all if ::Mongoid::VERSION[0].to_i >= 7
22
22
 
23
23
  # Doorkeeper 5.3 has custom classes for defining OAuth roles
@@ -8,7 +8,7 @@ module DoorkeeperMongodb
8
8
  module VERSION
9
9
  # Semver
10
10
  MAJOR = 5
11
- MINOR = 4
11
+ MINOR = 5
12
12
  TINY = 0
13
13
 
14
14
  # Full version number
@@ -29,6 +29,7 @@ require "doorkeeper/orm/mongoid5"
29
29
  require "doorkeeper/orm/mongoid6"
30
30
  require "doorkeeper/orm/mongoid7"
31
31
  require "doorkeeper/orm/mongoid8"
32
+ require "doorkeeper/orm/mongoid9"
32
33
 
33
34
  module DoorkeeperMongodb
34
35
  def load_locales
@@ -11,7 +11,7 @@ development:
11
11
  test:
12
12
  clients:
13
13
  default:
14
- database: doorkeeper-mongoid7-test
14
+ database: doorkeeper-mongoid8-test
15
15
  hosts:
16
16
  - localhost:27017
17
17
  options:
@@ -0,0 +1,19 @@
1
+ development:
2
+ clients:
3
+ default:
4
+ database: doorkeeper-mongoid9-development
5
+ hosts:
6
+ - localhost:27017
7
+ options:
8
+ write:
9
+ w: 1
10
+
11
+ test:
12
+ clients:
13
+ default:
14
+ database: doorkeeper-mongoid9-test
15
+ hosts:
16
+ - localhost:27017
17
+ options:
18
+ write:
19
+ w: 1
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "mongoid"
4
+
5
+ Mongoid.logger.level = Logger::ERROR
6
+ Mongo::Logger.logger.level = Logger::ERROR
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doorkeeper-mongodb
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.4.0
4
+ version: 5.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jasl
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-03-27 00:00:00.000000000 Z
12
+ date: 2025-10-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: doorkeeper
@@ -205,6 +205,11 @@ files:
205
205
  - lib/doorkeeper/orm/mongoid8/access_token.rb
206
206
  - lib/doorkeeper/orm/mongoid8/application.rb
207
207
  - lib/doorkeeper/orm/mongoid8/stale_records_cleaner.rb
208
+ - lib/doorkeeper/orm/mongoid9.rb
209
+ - lib/doorkeeper/orm/mongoid9/access_grant.rb
210
+ - lib/doorkeeper/orm/mongoid9/access_token.rb
211
+ - lib/doorkeeper/orm/mongoid9/application.rb
212
+ - lib/doorkeeper/orm/mongoid9/stale_records_cleaner.rb
208
213
  - spec/dummy/Rakefile
209
214
  - spec/dummy/app/assets/config/manifest.js
210
215
  - spec/dummy/app/controllers/application_controller.rb
@@ -237,6 +242,7 @@ files:
237
242
  - spec/dummy/config/mongoid6.yml
238
243
  - spec/dummy/config/mongoid7.yml
239
244
  - spec/dummy/config/mongoid8.yml
245
+ - spec/dummy/config/mongoid9.yml
240
246
  - spec/dummy/config/routes.rb
241
247
  - spec/dummy/db/migrate/20111122132257_create_users.rb
242
248
  - spec/dummy/db/migrate/20120312140401_add_password_to_users.rb
@@ -288,6 +294,7 @@ files:
288
294
  - spec/support/orm/mongoid6.rb
289
295
  - spec/support/orm/mongoid7.rb
290
296
  - spec/support/orm/mongoid8.rb
297
+ - spec/support/orm/mongoid9.rb
291
298
  - spec/support/render_with_matcher.rb
292
299
  homepage: http://github.com/doorkeeper-gem/doorkeeper-mongodb
293
300
  licenses:
@@ -352,6 +359,7 @@ test_files:
352
359
  - spec/dummy/config/mongo.yml
353
360
  - spec/dummy/config/mongoid6.yml
354
361
  - spec/dummy/config/boot.rb
362
+ - spec/dummy/config/mongoid9.yml
355
363
  - spec/dummy/config/environments/development.rb
356
364
  - spec/dummy/config/environments/production.rb
357
365
  - spec/dummy/config/environments/test.rb
@@ -394,6 +402,7 @@ test_files:
394
402
  - spec/support/orm/mongoid4.rb
395
403
  - spec/support/orm/mongoid8.rb
396
404
  - spec/support/orm/mongoid.rb
405
+ - spec/support/orm/mongoid9.rb
397
406
  - spec/support/orm/mongoid5.rb
398
407
  - spec/support/doorkeeper_rspec.rb
399
408
  - spec/support/render_with_matcher.rb