doorkeeper-mongodb 5.3.0 → 5.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/Rakefile +18 -4
  4. data/lib/doorkeeper-mongodb/mixins/mongoid/access_token_mixin.rb +45 -5
  5. data/lib/doorkeeper-mongodb/version.rb +1 -1
  6. data/spec/dummy/app/assets/config/manifest.js +0 -0
  7. data/spec/dummy/app/controllers/application_controller.rb +0 -0
  8. data/spec/dummy/app/controllers/custom_authorizations_controller.rb +0 -0
  9. data/spec/dummy/app/controllers/full_protected_resources_controller.rb +0 -0
  10. data/spec/dummy/app/controllers/home_controller.rb +0 -0
  11. data/spec/dummy/app/controllers/metal_controller.rb +0 -0
  12. data/spec/dummy/app/controllers/semi_protected_resources_controller.rb +0 -0
  13. data/spec/dummy/app/helpers/application_helper.rb +0 -0
  14. data/spec/dummy/app/views/home/index.html.erb +0 -0
  15. data/spec/dummy/app/views/layouts/application.html.erb +0 -0
  16. data/spec/dummy/config/application.rb +0 -0
  17. data/spec/dummy/config/boot.rb +0 -0
  18. data/spec/dummy/config/database.yml +0 -0
  19. data/spec/dummy/config/environment.rb +0 -0
  20. data/spec/dummy/config/environments/development.rb +0 -0
  21. data/spec/dummy/config/environments/production.rb +0 -0
  22. data/spec/dummy/config/environments/test.rb +0 -0
  23. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -0
  24. data/spec/dummy/config/initializers/doorkeeper.rb +7 -2
  25. data/spec/dummy/config/initializers/secret_token.rb +0 -0
  26. data/spec/dummy/config/initializers/session_store.rb +0 -0
  27. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -0
  28. data/spec/dummy/config/locales/doorkeeper.en.yml +0 -0
  29. data/spec/dummy/config/mongoid8.yml +19 -0
  30. data/spec/dummy/config/routes.rb +0 -0
  31. data/spec/dummy/config.ru +1 -1
  32. data/spec/dummy/db/migrate/20111122132257_create_users.rb +0 -0
  33. data/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb +0 -0
  34. data/spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb +0 -0
  35. data/spec/dummy/db/migrate/20151223200000_add_owner_to_application.rb +0 -0
  36. data/spec/dummy/db/migrate/20160320211015_add_previous_refresh_token_to_access_tokens.rb +0 -0
  37. data/spec/dummy/db/migrate/20170822064514_enable_pkce.rb +0 -0
  38. data/spec/dummy/db/migrate/20180210183654_add_confidential_to_applications.rb +0 -0
  39. data/spec/dummy/db/migrate/20230205064514_add_custom_attributes.rb +8 -0
  40. data/spec/dummy/db/schema.rb +3 -1
  41. data/spec/dummy/log/test.log +39440 -0
  42. data/spec/dummy/public/404.html +0 -0
  43. data/spec/dummy/public/422.html +0 -0
  44. data/spec/dummy/public/500.html +0 -0
  45. data/spec/dummy/public/favicon.ico +0 -0
  46. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2L/2LdlR-88TqZc8vSU7Z58xiNpCGRZj0CIlOxSN4Vx2i4.cache +1 -0
  47. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{Pn/PnXU_mkG2fLZFm9BwiZ03BZdBTjKuInP-cRXjHS7yJo.cache → 2r/2r0L9eNOmETsg4Tm1IgBdw3J4ahcko41NpILRXu19_A.cache} +0 -0
  48. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/5y/5ywocFQgpSY36nyF_xDKPExhDRo-eqeiqfDvQee1K9k.cache +2 -0
  49. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{Qs/QsVgO6vM5Yn9oeYTYlrqtyVnK6sdVDWDa083N7zpfHw.cache → 8r/8rW0CpDDUJZ7xvg86t6jZ6WmyvaVZ0uTPEPRjghFIKo.cache} +0 -0
  50. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{PA/PAH_jI20wRw12tngeJ-V619c30avNLDu5U9Z-9Pc5SQ.cache → Cs/CsfBL8Dls9-jhjFsNYt4DZxu5LWChDMB-xXKjsEFSsU.cache} +0 -0
  51. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{8D/8DJG7JfPvShfLLyeSom6NZ_TcQc6QH27tJ7prEWZPfI.cache → Cv/Cv9WXE_0OqtPUZBXfTWaE8uKx9oFIzqO18ZkwVaBLSg.cache} +0 -0
  52. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Mf/MfB2-0nbsmC548XBSLftafi6BZ9nAquBA-6eu7mAmdE.cache +2 -0
  53. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/N2/N2cUP-Um_nQ5ZTCQr_H0bKIjOSIyV7Ry5sT6-DB9e4A.cache +1 -0
  54. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{FJ/FJlQpfMtpRbrM5P8A7d2FAelFKwo6GrVs2xks8z5GKU.cache → Ot/OtNAnT3d-csAKBtJ8UBLOSwUDyfmOdCWpS08RaSCGsQ.cache} +0 -0
  55. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/P3/P33RwiTMGEu2wZySBEUmf5U7hnfBhdL49wzdUWXYNRs.cache +1 -0
  56. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/RZ/RZAL9gIt4aD731Ikf7UZZNPSZXzhPqtDskLB7nQcWH4.cache +1 -0
  57. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/SQ/SQVJeYO2bM0qgQiOaeVBjYo3SWQZmvixa3tXUjsmuUs.cache +0 -0
  58. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{Ma/MaK3K1AoZZ4xM5fOOifhROd73hfZJpP4yGbkGdoYtEk.cache → V2/V2JApVhUSYhvWnNVIbpe58U4xheVkpi0gCStqjDN6-A.cache} +0 -0
  59. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{Lk/LklIq5hrBAPESXVUpFMwQ9L-1qTj90sPVi6U19_Xi-Q.cache → VA/VADOUaZFukufOb44ts4KoyQZumPcVJET0bi9RvC7c-o.cache} +1 -1
  60. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Vz/VzdPLfWn16XbpHNJdkDMamAf3QutM29cvvPkDNyy5nE.cache +1 -0
  61. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/W9/W9QfraySVwoRt-SgGOIS0e-iP8R1qP_URwXZw1l6M5E.cache +0 -0
  62. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Wy/Wyiw07ngOzgV6RPis_Lo2hhSRkwo2YSqKTEDAF0crhA.cache +0 -0
  63. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Z6/Z6rAtdVt3OXS26vLVCtdO3vmMlttI3ajdpbC2FHk7iQ.cache +0 -0
  64. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/b6/b6QRH6ZdCc0e6bUWu4qni_kZmptaMgWciO8Jl9q6_p8.cache +0 -0
  65. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{Pm/PmheG0PGFqDws1qgFOxOyIL-gpMof3Ar9eSRKVLYuik.cache → fP/fPihom3hnc1rQQxpviTvZPRJB_IghWYWP3dDcsGrcLk.cache} +0 -0
  66. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/gD/gDU38plXvosMgFK47_PBI9xGVsmsE2tShWEZzxiek3k.cache +1 -0
  67. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/gR/gRqL5_jaFW7eA3d2frJmOzw_vFLuvfhwMhotAlsO8J4.cache +2 -0
  68. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jC/jCTZ1jAldKBn4OTANBBmCKzxLrDgok1ur4meoTqlDNg.cache +0 -0
  69. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{yN/yNOFGOsnHmxXNMkuEAWuL1u3jlmdvrdeoTx6DDJ1in8.cache → jc/jcB8w1gBT7JP10DW4OOvvYpW1ZFeMyedngmMy3QbRLQ.cache} +0 -0
  70. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/jg/jgxXkkkXf1NPOPrpNdEJzhDt-2xHGzd_-mLkIHWrOr4.cache +2 -0
  71. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/nx/nxzZnvk5YyBhTUloQSZZ5zRuaqlsLiHy_AbOzQ3d788.cache +0 -0
  72. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/wr/wrlf8nUW2yftpcIA97qImyECR8f8o3OiOdHLdfkmw8c.cache +1 -0
  73. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/{qT/qTQIQsmS0Wbbg2JxNn9rxdI5qVOTg5SfyQdaTvr9vLo.cache → xd/xdD4KJ55W3jy5PIrwT0UnDp1toKpUfgrjJBgB4WaPIc.cache} +0 -0
  74. data/spec/support/doorkeeper_rspec.rb +0 -0
  75. data/spec/support/orm/mongoid.rb +18 -2
  76. data/spec/support/orm/mongoid8.rb +6 -0
  77. data/spec/support/render_with_matcher.rb +26 -0
  78. metadata +117 -241
  79. data/spec/controllers/application_metal_controller_spec.rb +0 -64
  80. data/spec/controllers/applications_controller_spec.rb +0 -270
  81. data/spec/controllers/authorizations_controller_spec.rb +0 -744
  82. data/spec/controllers/protected_resources_controller_spec.rb +0 -361
  83. data/spec/controllers/token_info_controller_spec.rb +0 -50
  84. data/spec/controllers/tokens_controller_spec.rb +0 -542
  85. data/spec/doorkeeper/redirect_uri_validator_spec.rb +0 -183
  86. data/spec/doorkeeper/server_spec.rb +0 -50
  87. data/spec/doorkeeper/stale_records_cleaner_spec.rb +0 -103
  88. data/spec/doorkeeper/version_spec.rb +0 -17
  89. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-o/-ofn45zIfO5vx4VD6m6NXesLf6da5usA-Sbw2SVju3o.cache +0 -2
  90. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/0_/0_ouGcG_o_1zmVmBe-tdQYk594LBwVa1bumjrKtdfEw.cache +0 -0
  91. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/2X/2XMMcHbyTSRqh1GkV0xzyIETNtt-zgN6iniziShaKmQ.cache +0 -2
  92. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/4Q/4QQw-pMQ98JIj3xdcFhGBQdysdGPY9rWffRqWMmyjew.cache +0 -1
  93. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/7H/7HjRsym0tTpXFCVhWt6kteMs_-CozKVbr9s5syHm8es.cache +0 -1
  94. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/8B/8BxJyv22HPFHu1se_l2J8qW1N9NzZ16UOWOy1YMSgs4.cache +0 -1
  95. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/9x/9xjtGv-yKjj62x9uFwBZg8pTSh9ERPAgANwNo9uwIaA.cache +0 -1
  96. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Bt/BtXO7f0PZ8DNt3TMLYM-zY7LkbWa_KgyB0v1V98M1CQ.cache +0 -1
  97. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/E0/E02f1Q2tutWumMulGCFNfqQNjvEP_hMAK_5E83eWepI.cache +0 -0
  98. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/EZ/EZGpd6pUEJZxO6uT2yIS4Fpn5KX7VDgC9VB3AaemF5Q.cache +0 -2
  99. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/L8/L8mOWakJlWKr6MU85rj0V7yGFfNyIR6vE6YXtqArPGw.cache +0 -1
  100. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/MB/MBWRxa9S470ee8suxVKp0jYgv6K6FQOqKGV0kPGQNMs.cache +0 -1
  101. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Ph/Ph7RtH_NvG2I8XpTa8mA8SBQXZDzBPVIh4CH6g7OXJ0.cache +0 -2
  102. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/So/So59ksdx2dw-_A3-zFZ6Palr7fROjm7_0JDZb04temw.cache +0 -0
  103. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/Wt/WtXL_iDofLeTH_v0Yf3PM421r9b1V0g-VBvMPeu9KA0.cache +0 -0
  104. data/spec/dummy/tmp/cache/assets/sprockets/v4.0.0/dX/dX6FDdUIy8yBCOoaoXcjf71rX9N_bpiXGJ4Urt32NTk.cache +0 -0
  105. data/spec/factories.rb +0 -30
  106. data/spec/grape/grape_integration_spec.rb +0 -137
  107. data/spec/helpers/doorkeeper/dashboard_helper_spec.rb +0 -26
  108. data/spec/lib/config_spec.rb +0 -824
  109. data/spec/lib/doorkeeper_spec.rb +0 -27
  110. data/spec/lib/models/expirable_spec.rb +0 -61
  111. data/spec/lib/models/reusable_spec.rb +0 -40
  112. data/spec/lib/models/revocable_spec.rb +0 -55
  113. data/spec/lib/models/scopes_spec.rb +0 -61
  114. data/spec/lib/models/secret_storable_spec.rb +0 -136
  115. data/spec/lib/oauth/authorization/uri_builder_spec.rb +0 -35
  116. data/spec/lib/oauth/authorization_code_request_spec.rb +0 -180
  117. data/spec/lib/oauth/base_request_spec.rb +0 -210
  118. data/spec/lib/oauth/base_response_spec.rb +0 -45
  119. data/spec/lib/oauth/client/credentials_spec.rb +0 -90
  120. data/spec/lib/oauth/client_credentials/creator_spec.rb +0 -135
  121. data/spec/lib/oauth/client_credentials/issuer_spec.rb +0 -110
  122. data/spec/lib/oauth/client_credentials/validation_spec.rb +0 -92
  123. data/spec/lib/oauth/client_credentials_integration_spec.rb +0 -27
  124. data/spec/lib/oauth/client_credentials_request_spec.rb +0 -105
  125. data/spec/lib/oauth/client_spec.rb +0 -38
  126. data/spec/lib/oauth/code_request_spec.rb +0 -46
  127. data/spec/lib/oauth/code_response_spec.rb +0 -36
  128. data/spec/lib/oauth/error_response_spec.rb +0 -65
  129. data/spec/lib/oauth/error_spec.rb +0 -21
  130. data/spec/lib/oauth/forbidden_token_response_spec.rb +0 -20
  131. data/spec/lib/oauth/helpers/scope_checker_spec.rb +0 -110
  132. data/spec/lib/oauth/helpers/unique_token_spec.rb +0 -21
  133. data/spec/lib/oauth/helpers/uri_checker_spec.rb +0 -262
  134. data/spec/lib/oauth/invalid_request_response_spec.rb +0 -73
  135. data/spec/lib/oauth/invalid_token_response_spec.rb +0 -53
  136. data/spec/lib/oauth/password_access_token_request_spec.rb +0 -202
  137. data/spec/lib/oauth/pre_authorization_spec.rb +0 -230
  138. data/spec/lib/oauth/refresh_token_request_spec.rb +0 -166
  139. data/spec/lib/oauth/scopes_spec.rb +0 -146
  140. data/spec/lib/oauth/token_request_spec.rb +0 -164
  141. data/spec/lib/oauth/token_response_spec.rb +0 -84
  142. data/spec/lib/oauth/token_spec.rb +0 -156
  143. data/spec/lib/option_spec.rb +0 -51
  144. data/spec/lib/request/strategy_spec.rb +0 -51
  145. data/spec/lib/secret_storing/base_spec.rb +0 -61
  146. data/spec/lib/secret_storing/bcrypt_spec.rb +0 -50
  147. data/spec/lib/secret_storing/plain_spec.rb +0 -45
  148. data/spec/lib/secret_storing/sha256_hash_spec.rb +0 -49
  149. data/spec/models/doorkeeper/access_grant_spec.rb +0 -173
  150. data/spec/models/doorkeeper/access_token_spec.rb +0 -644
  151. data/spec/models/doorkeeper/application_spec.rb +0 -499
  152. data/spec/requests/applications/applications_request_spec.rb +0 -257
  153. data/spec/requests/applications/authorized_applications_spec.rb +0 -32
  154. data/spec/requests/endpoints/authorization_spec.rb +0 -91
  155. data/spec/requests/endpoints/token_spec.rb +0 -85
  156. data/spec/requests/flows/authorization_code_errors_spec.rb +0 -86
  157. data/spec/requests/flows/authorization_code_spec.rb +0 -559
  158. data/spec/requests/flows/client_credentials_spec.rb +0 -219
  159. data/spec/requests/flows/implicit_grant_errors_spec.rb +0 -46
  160. data/spec/requests/flows/implicit_grant_spec.rb +0 -91
  161. data/spec/requests/flows/password_spec.rb +0 -356
  162. data/spec/requests/flows/refresh_token_spec.rb +0 -255
  163. data/spec/requests/flows/revoke_token_spec.rb +0 -196
  164. data/spec/requests/flows/skip_authorization_spec.rb +0 -66
  165. data/spec/requests/protected_resources/metal_spec.rb +0 -16
  166. data/spec/requests/protected_resources/private_api_spec.rb +0 -83
  167. data/spec/routing/custom_controller_routes_spec.rb +0 -133
  168. data/spec/routing/default_routes_spec.rb +0 -41
  169. data/spec/routing/scoped_routes_spec.rb +0 -47
  170. data/spec/spec_helper.rb +0 -54
  171. data/spec/spec_helper_integration.rb +0 -4
  172. data/spec/support/dependencies/factory_bot.rb +0 -4
  173. data/spec/support/helpers/access_token_request_helper.rb +0 -14
  174. data/spec/support/helpers/authorization_request_helper.rb +0 -43
  175. data/spec/support/helpers/config_helper.rb +0 -11
  176. data/spec/support/helpers/model_helper.rb +0 -78
  177. data/spec/support/helpers/request_spec_helper.rb +0 -98
  178. data/spec/support/helpers/url_helper.rb +0 -62
  179. data/spec/support/orm/active_record.rb +0 -5
  180. data/spec/support/shared/controllers_shared_context.rb +0 -100
  181. data/spec/support/shared/hashing_shared_context.rb +0 -40
  182. 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: bdae346c1e6046eb82cbef6ae0156ba60f8c0317b8135038cc26abe6db11995a
4
- data.tar.gz: d8ce523eb6a7326cd694ece68b1151268c2e93ff9e06162a52fd075046291d08
3
+ metadata.gz: 43ffb322969c5c4a6eac7e397e0198423fecfda21d73fa7c239f04bab34650c2
4
+ data.tar.gz: 7cc3e393c6192a4bd7fd7ba5c7d64061b1163b5c5f4d9468587b2f03d7bdfc2a
5
5
  SHA512:
6
- metadata.gz: a839777bae4797e6355e3cc548d674ed2d3f6c87de6678b2e99b45ac243c59cdd2043fbbe557134aa4a7207bdac9cb5e07ceff6f7fa5718a9bc39f8c1d3e800e
7
- data.tar.gz: b0ea7a54f37369afbfa5b94bc04327f61642154dadc9f937a9faef1a4859170a42fdfd923c52982117a2793a0c9a3bfd03d399d66781ffc74ac980042bb78932
6
+ metadata.gz: 68e449f5f8746d4537e81ddf4848b8c87d0dc610e9fe89f0a44a12718b7c26e057a7322929b8a053f5d8fce4e41e234ecc7c73d501e692c47acef99668892f74
7
+ data.tar.gz: 591b86f5d37eb1474d42d4efe14fc2ff03082724c18893eb2133d8764e57f25b734ea17dce636271311cffa87022147d52a96c0f869e499bbd5e83707dfb71ea
data/README.md CHANGED
@@ -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=5.1
61
- $ export BUNDLE_GEMFILE=$PWD/gemfiles/Gemfile.mongoid6.rb
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
- unless Dir.exist?("doorkeeper")
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 master`
37
+ `git submodule foreach git pull origin main`
24
38
  end
25
39
 
26
40
  desc "Default: run specs."
@@ -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
- secret_strategy.store_secret(self, :token, @raw_token)
414
- @raw_token
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
@@ -8,7 +8,7 @@ module DoorkeeperMongodb
8
8
  module VERSION
9
9
  # Semver
10
10
  MAJOR = 5
11
- MINOR = 3
11
+ MINOR = 4
12
12
  TINY = 0
13
13
 
14
14
  # Full version number
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
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
- # http://tools.ietf.org/html/rfc6819#section-4.4.2
88
- # http://tools.ietf.org/html/rfc6819#section-4.4.3
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-mongoid7-test
15
+ hosts:
16
+ - localhost:27017
17
+ options:
18
+ write:
19
+ w: 1
File without changes
data/spec/dummy/config.ru CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  # This file is used by Rack-based servers to start the application.
4
4
 
5
- require ::File.expand_path("../config/environment", __FILE__)
5
+ require ::File.expand_path('config/environment', __dir__)
6
6
  run Dummy::Application
File without changes
File without changes
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddCustomAttributes < ActiveRecord::Migration[4.2]
4
+ def change
5
+ add_column :oauth_access_grants, :tenant_name, :string
6
+ add_column :oauth_access_tokens, :tenant_name, :string
7
+ end
8
+ end
@@ -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: 20180210183654) do
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