doorkeeper-mongodb 5.3.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 +4 -4
- data/README.md +3 -3
- data/Rakefile +18 -4
- data/lib/doorkeeper/orm/mongoid9/access_grant.rb +26 -0
- data/lib/doorkeeper/orm/mongoid9/access_token.rb +38 -0
- data/lib/doorkeeper/orm/mongoid9/application.rb +43 -0
- data/lib/doorkeeper/orm/mongoid9/stale_records_cleaner.rb +11 -0
- data/lib/doorkeeper/orm/mongoid9.rb +50 -0
- data/lib/doorkeeper-mongodb/mixins/mongoid/access_grant_mixin.rb +6 -2
- data/lib/doorkeeper-mongodb/mixins/mongoid/access_token_mixin.rb +46 -6
- data/lib/doorkeeper-mongodb/mixins/mongoid/application_mixin.rb +2 -2
- data/lib/doorkeeper-mongodb/version.rb +1 -1
- data/lib/doorkeeper-mongodb.rb +1 -0
- data/spec/dummy/app/assets/config/manifest.js +0 -0
- data/spec/dummy/app/controllers/application_controller.rb +0 -0
- data/spec/dummy/app/controllers/custom_authorizations_controller.rb +0 -0
- data/spec/dummy/app/controllers/full_protected_resources_controller.rb +0 -0
- data/spec/dummy/app/controllers/home_controller.rb +0 -0
- data/spec/dummy/app/controllers/metal_controller.rb +0 -0
- data/spec/dummy/app/controllers/semi_protected_resources_controller.rb +0 -0
- data/spec/dummy/app/helpers/application_helper.rb +0 -0
- data/spec/dummy/app/views/home/index.html.erb +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +0 -0
- data/spec/dummy/config/application.rb +0 -0
- data/spec/dummy/config/boot.rb +0 -0
- data/spec/dummy/config/database.yml +0 -0
- data/spec/dummy/config/environment.rb +0 -0
- data/spec/dummy/config/environments/development.rb +0 -0
- data/spec/dummy/config/environments/production.rb +0 -0
- data/spec/dummy/config/environments/test.rb +0 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/dummy/config/initializers/doorkeeper.rb +7 -2
- data/spec/dummy/config/initializers/secret_token.rb +0 -0
- data/spec/dummy/config/initializers/session_store.rb +0 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +0 -0
- data/spec/dummy/config/locales/doorkeeper.en.yml +0 -0
- data/spec/dummy/config/mongoid8.yml +19 -0
- data/spec/dummy/config/mongoid9.yml +19 -0
- data/spec/dummy/config/routes.rb +0 -0
- data/spec/dummy/config.ru +1 -1
- data/spec/dummy/db/migrate/20111122132257_create_users.rb +0 -0
- data/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb +0 -0
- data/spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb +0 -0
- data/spec/dummy/db/migrate/20151223200000_add_owner_to_application.rb +0 -0
- data/spec/dummy/db/migrate/20160320211015_add_previous_refresh_token_to_access_tokens.rb +0 -0
- data/spec/dummy/db/migrate/20170822064514_enable_pkce.rb +0 -0
- data/spec/dummy/db/migrate/20180210183654_add_confidential_to_applications.rb +0 -0
- data/spec/dummy/db/migrate/20230205064514_add_custom_attributes.rb +8 -0
- data/spec/dummy/db/schema.rb +3 -1
- data/spec/dummy/log/test.log +39440 -0
- data/spec/dummy/public/404.html +0 -0
- data/spec/dummy/public/422.html +0 -0
- data/spec/dummy/public/500.html +0 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2L/2LdlR-88TqZc8vSU7Z58xiNpCGRZj0CIlOxSN4Vx2i4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{Pn/PnXU_mkG2fLZFm9BwiZ03BZdBTjKuInP-cRXjHS7yJo.cache → 2r/2r0L9eNOmETsg4Tm1IgBdw3J4ahcko41NpILRXu19_A.cache} +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/5y/5ywocFQgpSY36nyF_xDKPExhDRo-eqeiqfDvQee1K9k.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{Qs/QsVgO6vM5Yn9oeYTYlrqtyVnK6sdVDWDa083N7zpfHw.cache → 8r/8rW0CpDDUJZ7xvg86t6jZ6WmyvaVZ0uTPEPRjghFIKo.cache} +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{PA/PAH_jI20wRw12tngeJ-V619c30avNLDu5U9Z-9Pc5SQ.cache → Cs/CsfBL8Dls9-jhjFsNYt4DZxu5LWChDMB-xXKjsEFSsU.cache} +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{8D/8DJG7JfPvShfLLyeSom6NZ_TcQc6QH27tJ7prEWZPfI.cache → Cv/Cv9WXE_0OqtPUZBXfTWaE8uKx9oFIzqO18ZkwVaBLSg.cache} +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Mf/MfB2-0nbsmC548XBSLftafi6BZ9nAquBA-6eu7mAmdE.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/N2/N2cUP-Um_nQ5ZTCQr_H0bKIjOSIyV7Ry5sT6-DB9e4A.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{FJ/FJlQpfMtpRbrM5P8A7d2FAelFKwo6GrVs2xks8z5GKU.cache → Ot/OtNAnT3d-csAKBtJ8UBLOSwUDyfmOdCWpS08RaSCGsQ.cache} +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/P3/P33RwiTMGEu2wZySBEUmf5U7hnfBhdL49wzdUWXYNRs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/RZ/RZAL9gIt4aD731Ikf7UZZNPSZXzhPqtDskLB7nQcWH4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/SQ/SQVJeYO2bM0qgQiOaeVBjYo3SWQZmvixa3tXUjsmuUs.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{Ma/MaK3K1AoZZ4xM5fOOifhROd73hfZJpP4yGbkGdoYtEk.cache → V2/V2JApVhUSYhvWnNVIbpe58U4xheVkpi0gCStqjDN6-A.cache} +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{Lk/LklIq5hrBAPESXVUpFMwQ9L-1qTj90sPVi6U19_Xi-Q.cache → VA/VADOUaZFukufOb44ts4KoyQZumPcVJET0bi9RvC7c-o.cache} +1 -1
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Vz/VzdPLfWn16XbpHNJdkDMamAf3QutM29cvvPkDNyy5nE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/W9/W9QfraySVwoRt-SgGOIS0e-iP8R1qP_URwXZw1l6M5E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Wy/Wyiw07ngOzgV6RPis_Lo2hhSRkwo2YSqKTEDAF0crhA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Z6/Z6rAtdVt3OXS26vLVCtdO3vmMlttI3ajdpbC2FHk7iQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/b6/b6QRH6ZdCc0e6bUWu4qni_kZmptaMgWciO8Jl9q6_p8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{Pm/PmheG0PGFqDws1qgFOxOyIL-gpMof3Ar9eSRKVLYuik.cache → fP/fPihom3hnc1rQQxpviTvZPRJB_IghWYWP3dDcsGrcLk.cache} +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/gD/gDU38plXvosMgFK47_PBI9xGVsmsE2tShWEZzxiek3k.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/gR/gRqL5_jaFW7eA3d2frJmOzw_vFLuvfhwMhotAlsO8J4.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jC/jCTZ1jAldKBn4OTANBBmCKzxLrDgok1ur4meoTqlDNg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{yN/yNOFGOsnHmxXNMkuEAWuL1u3jlmdvrdeoTx6DDJ1in8.cache → jc/jcB8w1gBT7JP10DW4OOvvYpW1ZFeMyedngmMy3QbRLQ.cache} +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jg/jgxXkkkXf1NPOPrpNdEJzhDt-2xHGzd_-mLkIHWrOr4.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/nx/nxzZnvk5YyBhTUloQSZZ5zRuaqlsLiHy_AbOzQ3d788.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/wr/wrlf8nUW2yftpcIA97qImyECR8f8o3OiOdHLdfkmw8c.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{qT/qTQIQsmS0Wbbg2JxNn9rxdI5qVOTg5SfyQdaTvr9vLo.cache → xd/xdD4KJ55W3jy5PIrwT0UnDp1toKpUfgrjJBgB4WaPIc.cache} +0 -0
- data/spec/support/doorkeeper_rspec.rb +0 -0
- data/spec/support/orm/mongoid.rb +18 -2
- data/spec/support/orm/mongoid8.rb +6 -0
- data/spec/support/orm/mongoid9.rb +6 -0
- data/spec/support/render_with_matcher.rb +26 -0
- metadata +126 -241
- data/spec/controllers/application_metal_controller_spec.rb +0 -64
- data/spec/controllers/applications_controller_spec.rb +0 -270
- data/spec/controllers/authorizations_controller_spec.rb +0 -744
- data/spec/controllers/protected_resources_controller_spec.rb +0 -361
- data/spec/controllers/token_info_controller_spec.rb +0 -50
- data/spec/controllers/tokens_controller_spec.rb +0 -542
- data/spec/doorkeeper/redirect_uri_validator_spec.rb +0 -183
- data/spec/doorkeeper/server_spec.rb +0 -50
- data/spec/doorkeeper/stale_records_cleaner_spec.rb +0 -103
- data/spec/doorkeeper/version_spec.rb +0 -17
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-o/-ofn45zIfO5vx4VD6m6NXesLf6da5usA-Sbw2SVju3o.cache +0 -2
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/0_/0_ouGcG_o_1zmVmBe-tdQYk594LBwVa1bumjrKtdfEw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2X/2XMMcHbyTSRqh1GkV0xzyIETNtt-zgN6iniziShaKmQ.cache +0 -2
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/4Q/4QQw-pMQ98JIj3xdcFhGBQdysdGPY9rWffRqWMmyjew.cache +0 -1
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/7H/7HjRsym0tTpXFCVhWt6kteMs_-CozKVbr9s5syHm8es.cache +0 -1
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/8B/8BxJyv22HPFHu1se_l2J8qW1N9NzZ16UOWOy1YMSgs4.cache +0 -1
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/9x/9xjtGv-yKjj62x9uFwBZg8pTSh9ERPAgANwNo9uwIaA.cache +0 -1
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Bt/BtXO7f0PZ8DNt3TMLYM-zY7LkbWa_KgyB0v1V98M1CQ.cache +0 -1
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/E0/E02f1Q2tutWumMulGCFNfqQNjvEP_hMAK_5E83eWepI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/EZ/EZGpd6pUEJZxO6uT2yIS4Fpn5KX7VDgC9VB3AaemF5Q.cache +0 -2
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/L8/L8mOWakJlWKr6MU85rj0V7yGFfNyIR6vE6YXtqArPGw.cache +0 -1
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/MB/MBWRxa9S470ee8suxVKp0jYgv6K6FQOqKGV0kPGQNMs.cache +0 -1
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ph/Ph7RtH_NvG2I8XpTa8mA8SBQXZDzBPVIh4CH6g7OXJ0.cache +0 -2
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/So/So59ksdx2dw-_A3-zFZ6Palr7fROjm7_0JDZb04temw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Wt/WtXL_iDofLeTH_v0Yf3PM421r9b1V0g-VBvMPeu9KA0.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/dX/dX6FDdUIy8yBCOoaoXcjf71rX9N_bpiXGJ4Urt32NTk.cache +0 -0
- data/spec/factories.rb +0 -30
- data/spec/grape/grape_integration_spec.rb +0 -137
- data/spec/helpers/doorkeeper/dashboard_helper_spec.rb +0 -26
- data/spec/lib/config_spec.rb +0 -824
- data/spec/lib/doorkeeper_spec.rb +0 -27
- data/spec/lib/models/expirable_spec.rb +0 -61
- data/spec/lib/models/reusable_spec.rb +0 -40
- data/spec/lib/models/revocable_spec.rb +0 -55
- data/spec/lib/models/scopes_spec.rb +0 -61
- data/spec/lib/models/secret_storable_spec.rb +0 -136
- data/spec/lib/oauth/authorization/uri_builder_spec.rb +0 -35
- data/spec/lib/oauth/authorization_code_request_spec.rb +0 -180
- data/spec/lib/oauth/base_request_spec.rb +0 -210
- data/spec/lib/oauth/base_response_spec.rb +0 -45
- data/spec/lib/oauth/client/credentials_spec.rb +0 -90
- data/spec/lib/oauth/client_credentials/creator_spec.rb +0 -135
- data/spec/lib/oauth/client_credentials/issuer_spec.rb +0 -110
- data/spec/lib/oauth/client_credentials/validation_spec.rb +0 -92
- data/spec/lib/oauth/client_credentials_integration_spec.rb +0 -27
- data/spec/lib/oauth/client_credentials_request_spec.rb +0 -105
- data/spec/lib/oauth/client_spec.rb +0 -38
- data/spec/lib/oauth/code_request_spec.rb +0 -46
- data/spec/lib/oauth/code_response_spec.rb +0 -36
- data/spec/lib/oauth/error_response_spec.rb +0 -65
- data/spec/lib/oauth/error_spec.rb +0 -21
- data/spec/lib/oauth/forbidden_token_response_spec.rb +0 -20
- data/spec/lib/oauth/helpers/scope_checker_spec.rb +0 -110
- data/spec/lib/oauth/helpers/unique_token_spec.rb +0 -21
- data/spec/lib/oauth/helpers/uri_checker_spec.rb +0 -262
- data/spec/lib/oauth/invalid_request_response_spec.rb +0 -73
- data/spec/lib/oauth/invalid_token_response_spec.rb +0 -53
- data/spec/lib/oauth/password_access_token_request_spec.rb +0 -202
- data/spec/lib/oauth/pre_authorization_spec.rb +0 -230
- data/spec/lib/oauth/refresh_token_request_spec.rb +0 -166
- data/spec/lib/oauth/scopes_spec.rb +0 -146
- data/spec/lib/oauth/token_request_spec.rb +0 -164
- data/spec/lib/oauth/token_response_spec.rb +0 -84
- data/spec/lib/oauth/token_spec.rb +0 -156
- data/spec/lib/option_spec.rb +0 -51
- data/spec/lib/request/strategy_spec.rb +0 -51
- data/spec/lib/secret_storing/base_spec.rb +0 -61
- data/spec/lib/secret_storing/bcrypt_spec.rb +0 -50
- data/spec/lib/secret_storing/plain_spec.rb +0 -45
- data/spec/lib/secret_storing/sha256_hash_spec.rb +0 -49
- data/spec/models/doorkeeper/access_grant_spec.rb +0 -173
- data/spec/models/doorkeeper/access_token_spec.rb +0 -644
- data/spec/models/doorkeeper/application_spec.rb +0 -499
- data/spec/requests/applications/applications_request_spec.rb +0 -257
- data/spec/requests/applications/authorized_applications_spec.rb +0 -32
- data/spec/requests/endpoints/authorization_spec.rb +0 -91
- data/spec/requests/endpoints/token_spec.rb +0 -85
- data/spec/requests/flows/authorization_code_errors_spec.rb +0 -86
- data/spec/requests/flows/authorization_code_spec.rb +0 -559
- data/spec/requests/flows/client_credentials_spec.rb +0 -219
- data/spec/requests/flows/implicit_grant_errors_spec.rb +0 -46
- data/spec/requests/flows/implicit_grant_spec.rb +0 -91
- data/spec/requests/flows/password_spec.rb +0 -356
- data/spec/requests/flows/refresh_token_spec.rb +0 -255
- data/spec/requests/flows/revoke_token_spec.rb +0 -196
- data/spec/requests/flows/skip_authorization_spec.rb +0 -66
- data/spec/requests/protected_resources/metal_spec.rb +0 -16
- data/spec/requests/protected_resources/private_api_spec.rb +0 -83
- data/spec/routing/custom_controller_routes_spec.rb +0 -133
- data/spec/routing/default_routes_spec.rb +0 -41
- data/spec/routing/scoped_routes_spec.rb +0 -47
- data/spec/spec_helper.rb +0 -54
- data/spec/spec_helper_integration.rb +0 -4
- data/spec/support/dependencies/factory_bot.rb +0 -4
- data/spec/support/helpers/access_token_request_helper.rb +0 -14
- data/spec/support/helpers/authorization_request_helper.rb +0 -43
- data/spec/support/helpers/config_helper.rb +0 -11
- data/spec/support/helpers/model_helper.rb +0 -78
- data/spec/support/helpers/request_spec_helper.rb +0 -98
- data/spec/support/helpers/url_helper.rb +0 -62
- data/spec/support/orm/active_record.rb +0 -5
- data/spec/support/shared/controllers_shared_context.rb +0 -100
- data/spec/support/shared/hashing_shared_context.rb +0 -40
- data/spec/support/shared/models_shared_examples.rb +0 -56
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 31397e2cb87670cde0c3c5eb8bd487a864e14c11dfcedc868c5fd1e2b4683e87
|
|
4
|
+
data.tar.gz: 534a2ce1dd42bc361839b31e96a54491b2142b1366a46590a719ee071b835b36
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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 :
|
|
41
|
+
orm :mongoid9 # or any other version of mongoid
|
|
42
42
|
end
|
|
43
43
|
```
|
|
44
44
|
|
|
@@ -57,8 +57,8 @@ variables defined in `.travis.yml` file.
|
|
|
57
57
|
To run locally, you need to choose a gemfile, with a command similar to:
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
$ export RAILS=
|
|
61
|
-
$ export BUNDLE_GEMFILE=$PWD/gemfiles/Gemfile.
|
|
60
|
+
$ export RAILS=6.0
|
|
61
|
+
$ export BUNDLE_GEMFILE=$PWD/gemfiles/Gemfile.mongoid7.rb
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
---
|
data/Rakefile
CHANGED
|
@@ -3,16 +3,30 @@
|
|
|
3
3
|
require "bundler/setup"
|
|
4
4
|
require "rspec/core/rake_task"
|
|
5
5
|
|
|
6
|
+
class ExtensionIntegrator
|
|
7
|
+
def self.gsub(filepath, pattern, value)
|
|
8
|
+
file = File.read(filepath)
|
|
9
|
+
updated_file = file.gsub(pattern, value)
|
|
10
|
+
File.open(filepath, "w") { |line| line.puts(updated_file) }
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
6
14
|
task :load_doorkeeper do
|
|
7
15
|
`rm -rf spec/`
|
|
8
16
|
`git checkout spec`
|
|
9
|
-
|
|
10
|
-
`git submodule init`
|
|
11
|
-
`git submodule update`
|
|
17
|
+
if Dir["doorkeeper/*"].empty?
|
|
18
|
+
puts `git submodule init`
|
|
19
|
+
puts `git submodule update`
|
|
12
20
|
end
|
|
13
21
|
`cp -r -n doorkeeper/spec .`
|
|
14
22
|
`rm -rf spec/generators/` # we are not ActiveRecord
|
|
15
23
|
`rm -rf spec/validators/`
|
|
24
|
+
ExtensionIntegrator.gsub(
|
|
25
|
+
"spec/spec_helper.rb",
|
|
26
|
+
'require "database_cleaner"',
|
|
27
|
+
"",
|
|
28
|
+
)
|
|
29
|
+
`rm ./spec/models/doorkeeper/application_spec.rb`
|
|
16
30
|
`bundle exec rspec`
|
|
17
31
|
end
|
|
18
32
|
|
|
@@ -20,7 +34,7 @@ desc "Update Git submodules."
|
|
|
20
34
|
task :update_submodules do
|
|
21
35
|
Rake::Task["load_doorkeeper"].invoke if Dir["doorkeeper/*"].empty?
|
|
22
36
|
|
|
23
|
-
`git submodule foreach git pull origin
|
|
37
|
+
`git submodule foreach git pull origin main`
|
|
24
38
|
end
|
|
25
39
|
|
|
26
40
|
desc "Default: run specs."
|
|
@@ -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,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
|
-
|
|
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
|
|
@@ -53,6 +53,26 @@ module DoorkeeperMongodb
|
|
|
53
53
|
before_validation :generate_refresh_token,
|
|
54
54
|
on: :create,
|
|
55
55
|
if: :use_refresh_token?
|
|
56
|
+
|
|
57
|
+
# Returns non-expired and non-revoked access tokens
|
|
58
|
+
scope :not_expired, -> {
|
|
59
|
+
relation = where(revoked_at: nil)
|
|
60
|
+
|
|
61
|
+
relation.where(
|
|
62
|
+
{
|
|
63
|
+
"$expr": {
|
|
64
|
+
"$gt": [
|
|
65
|
+
{
|
|
66
|
+
"$add": ["$created_at", { "$multiply": ["$expires_in", 1000] }],
|
|
67
|
+
},
|
|
68
|
+
Time.now.utc,
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
).or(
|
|
73
|
+
relation.where(expires_in: nil),
|
|
74
|
+
)
|
|
75
|
+
}
|
|
56
76
|
end
|
|
57
77
|
|
|
58
78
|
module ClassMethods
|
|
@@ -113,8 +133,9 @@ module DoorkeeperMongodb
|
|
|
113
133
|
# @return [Doorkeeper::AccessToken, nil] Access Token instance or
|
|
114
134
|
# nil if matching record was not found
|
|
115
135
|
#
|
|
116
|
-
def matching_token_for(application, resource_owner, scopes)
|
|
136
|
+
def matching_token_for(application, resource_owner, scopes, include_expired: true)
|
|
117
137
|
tokens = authorized_tokens_for(application&.id, resource_owner)
|
|
138
|
+
tokens = tokens.not_expired unless include_expired
|
|
118
139
|
find_matching_token(tokens, application, scopes)
|
|
119
140
|
end
|
|
120
141
|
|
|
@@ -191,6 +212,10 @@ module DoorkeeperMongodb
|
|
|
191
212
|
expires_in = attributes[:expires_in]
|
|
192
213
|
use_refresh_token = attributes[:use_refresh_token]
|
|
193
214
|
|
|
215
|
+
token_attributes = attributes.except(
|
|
216
|
+
:application, :resource_owner, :scopes, :expires_in, :use_refresh_token
|
|
217
|
+
)
|
|
218
|
+
|
|
194
219
|
if Doorkeeper.configuration.reuse_access_token
|
|
195
220
|
access_token = matching_token_for(application, resource_owner, scopes)
|
|
196
221
|
|
|
@@ -203,6 +228,7 @@ module DoorkeeperMongodb
|
|
|
203
228
|
scopes: scopes,
|
|
204
229
|
expires_in: expires_in,
|
|
205
230
|
use_refresh_token: use_refresh_token,
|
|
231
|
+
**token_attributes,
|
|
206
232
|
)
|
|
207
233
|
end
|
|
208
234
|
|
|
@@ -403,15 +429,29 @@ module DoorkeeperMongodb
|
|
|
403
429
|
def generate_token
|
|
404
430
|
self.created_at ||= Time.now.utc
|
|
405
431
|
|
|
406
|
-
@raw_token = token_generator.generate(
|
|
432
|
+
@raw_token = token_generator.generate(attributes_for_token_generator)
|
|
433
|
+
secret_strategy.store_secret(self, :token, @raw_token)
|
|
434
|
+
@raw_token
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
def attributes_for_token_generator
|
|
438
|
+
{
|
|
407
439
|
resource_owner_id: resource_owner_id,
|
|
408
440
|
scopes: scopes,
|
|
409
441
|
application: application,
|
|
410
442
|
expires_in: expires_in,
|
|
411
443
|
created_at: created_at,
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
444
|
+
}.tap do |attributes|
|
|
445
|
+
if Doorkeeper.config.try(:polymorphic_resource_owner?)
|
|
446
|
+
attributes[:resource_owner] = resource_owner
|
|
447
|
+
end
|
|
448
|
+
|
|
449
|
+
if Doorkeeper.config.respond_to?(:custom_access_token_attributes)
|
|
450
|
+
Doorkeeper.config.custom_access_token_attributes.each do |attribute_name|
|
|
451
|
+
attributes[attribute_name] = public_send(attribute_name)
|
|
452
|
+
end
|
|
453
|
+
end
|
|
454
|
+
end
|
|
415
455
|
end
|
|
416
456
|
|
|
417
457
|
def token_generator
|
|
@@ -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
|
|
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
|
data/lib/doorkeeper-mongodb.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/spec/dummy/config/boot.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -41,6 +41,11 @@ Doorkeeper.configure do
|
|
|
41
41
|
#
|
|
42
42
|
# enforce_configured_scopes
|
|
43
43
|
|
|
44
|
+
# Use the url path for the native authorization code flow. Enabling this flag sets the authorization
|
|
45
|
+
# code response route for native redirect uris to oauth/authorize/<code>. The default is oauth/authorize/native?code=<code>.
|
|
46
|
+
# Rationale: https://github.com/doorkeeper-gem/doorkeeper/issues/1143
|
|
47
|
+
# use_url_path_for_native_authorization
|
|
48
|
+
|
|
44
49
|
# Provide support for an owner to be assigned to each registered application (disabled by default)
|
|
45
50
|
# Optional parameter confirmation: true (default false) if you want to enforce ownership of
|
|
46
51
|
# a registered application
|
|
@@ -84,8 +89,8 @@ Doorkeeper.configure do
|
|
|
84
89
|
#
|
|
85
90
|
# implicit and password grant flows have risks that you should understand
|
|
86
91
|
# before enabling:
|
|
87
|
-
#
|
|
88
|
-
#
|
|
92
|
+
# https://datatracker.ietf.org/doc/html/rfc6819#section-4.4.2
|
|
93
|
+
# https://datatracker.ietf.org/doc/html/rfc6819#section-4.4.3
|
|
89
94
|
#
|
|
90
95
|
# grant_flows %w[authorization_code client_credentials]
|
|
91
96
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
development:
|
|
2
|
+
clients:
|
|
3
|
+
default:
|
|
4
|
+
database: doorkeeper-mongoid8-development
|
|
5
|
+
hosts:
|
|
6
|
+
- localhost:27017
|
|
7
|
+
options:
|
|
8
|
+
write:
|
|
9
|
+
w: 1
|
|
10
|
+
|
|
11
|
+
test:
|
|
12
|
+
clients:
|
|
13
|
+
default:
|
|
14
|
+
database: doorkeeper-mongoid8-test
|
|
15
|
+
hosts:
|
|
16
|
+
- localhost:27017
|
|
17
|
+
options:
|
|
18
|
+
write:
|
|
19
|
+
w: 1
|
|
@@ -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
|
data/spec/dummy/config/routes.rb
CHANGED
|
File without changes
|
data/spec/dummy/config.ru
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/spec/dummy/db/schema.rb
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
#
|
|
11
11
|
# It's strongly recommended that you check this file into your version control system.
|
|
12
12
|
|
|
13
|
-
ActiveRecord::Schema.define(version:
|
|
13
|
+
ActiveRecord::Schema.define(version: 20230205064514) do
|
|
14
14
|
|
|
15
15
|
create_table "oauth_access_grants", force: :cascade do |t|
|
|
16
16
|
t.integer "resource_owner_id", null: false
|
|
@@ -22,6 +22,7 @@ ActiveRecord::Schema.define(version: 20180210183654) do
|
|
|
22
22
|
t.datetime "created_at", null: false
|
|
23
23
|
t.datetime "revoked_at"
|
|
24
24
|
t.string "scopes"
|
|
25
|
+
t.string "tenant_name"
|
|
25
26
|
unless ENV["WITHOUT_PKCE"]
|
|
26
27
|
t.string "code_challenge"
|
|
27
28
|
t.string "code_challenge_method"
|
|
@@ -40,6 +41,7 @@ ActiveRecord::Schema.define(version: 20180210183654) do
|
|
|
40
41
|
t.datetime "created_at", null: false
|
|
41
42
|
t.string "scopes"
|
|
42
43
|
t.string "previous_refresh_token", default: "", null: false
|
|
44
|
+
t.string "tenant_name"
|
|
43
45
|
t.index ["refresh_token"], name: "index_oauth_access_tokens_on_refresh_token", unique: true
|
|
44
46
|
t.index ["resource_owner_id"], name: "index_oauth_access_tokens_on_resource_owner_id"
|
|
45
47
|
t.index ["token"], name: "index_oauth_access_tokens_on_token", unique: true
|