doorkeeper-mongodb 5.2.3 → 5.4.0

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