From 6794ec3f5177da0b41142c6ba8a8cc63fd2ee9b0 Mon Sep 17 00:00:00 2001
From: Jessie Young <jessieyoung@gitlab.com>
Date: Sat, 30 Nov 2024 20:03:52 +0000
Subject: [PATCH] Upgrade doorkeeper-openid_connect to 1.8.10

* We were vendoring the gem before in order to fix version dependency
  issues with doorkeepeer (before it didn't support 5.8), see
  https://gitlab.com/gitlab-org/gitlab/-/merge_requests/173481
* Those version dependency issues were fixed in
  https://github.com/doorkeeper-gem/doorkeeper-openid_connect/pull/214
* Those change were released with v 1.8.10 of the gem
---
 Gemfile                                       |   4 +-
 Gemfile.checksum                              |   1 +
 Gemfile.lock                                  |  12 +-
 Gemfile.next.checksum                         |   1 +
 Gemfile.next.lock                             |  12 +-
 .../doorkeeper-openid_connect/.gitlab-ci.yml  |   9 -
 .../doorkeeper-openid_connect/CHANGELOG.md    | 288 ------------
 .../doorkeeper-openid_connect/CONTRIBUTING.md |  46 --
 vendor/gems/doorkeeper-openid_connect/Gemfile |  15 -
 .../doorkeeper-openid_connect/LICENSE.txt     |  22 -
 .../gems/doorkeeper-openid_connect/README.md  | 342 --------------
 .../gems/doorkeeper-openid_connect/Rakefile   |  26 --
 .../authorizations_extension.rb               |  12 -
 .../openid_connect/discovery_controller.rb    | 146 ------
 .../openid_connect/userinfo_controller.rb     |  13 -
 .../doorkeeper-openid_connect/bin/console     |  10 -
 .../gems/doorkeeper-openid_connect/bin/setup  |   8 -
 .../config/locales/en.yml                     |  23 -
 .../doorkeeper-openid_connect.gemspec         |  35 --
 .../gemfiles/doorkeeper_master.gemfile        |   9 -
 .../gemfiles/rails_6.0.gemfile                |   8 -
 .../gemfiles/rails_6.1.gemfile                |   8 -
 .../gemfiles/rails_7.0.gemfile                |   8 -
 .../lib/doorkeeper/oauth/id_token_request.rb  |  37 --
 .../lib/doorkeeper/oauth/id_token_response.rb |  33 --
 .../oauth/id_token_token_request.rb           |  15 -
 .../oauth/id_token_token_response.rb          |  14 -
 .../lib/doorkeeper/openid_connect.rb          |  76 ---
 .../openid_connect/claims/aggregated_claim.rb |  11 -
 .../doorkeeper/openid_connect/claims/claim.rb |  37 --
 .../claims/distributed_claim.rb               |  11 -
 .../openid_connect/claims/normal_claim.rb     |  20 -
 .../openid_connect/claims_builder.rb          |  39 --
 .../lib/doorkeeper/openid_connect/config.rb   |  84 ----
 .../lib/doorkeeper/openid_connect/engine.rb   |  15 -
 .../lib/doorkeeper/openid_connect/errors.rb   |  31 --
 .../openid_connect/helpers/controller.rb      | 141 ------
 .../lib/doorkeeper/openid_connect/id_token.rb |  72 ---
 .../openid_connect/id_token_token.rb          |  35 --
 .../oauth/authorization/code.rb               |  39 --
 .../oauth/authorization_code_request.rb       |  26 --
 .../oauth/password_access_token_request.rb    |  33 --
 .../openid_connect/oauth/pre_authorization.rb |  30 --
 .../openid_connect/oauth/token_response.rb    |  25 -
 .../openid_connect/orm/active_record.rb       |  52 ---
 .../orm/active_record/access_grant.rb         |  17 -
 .../orm/active_record/request.rb              |  21 -
 .../doorkeeper/openid_connect/rails/routes.rb |  72 ---
 .../openid_connect/rails/routes/mapper.rb     |  32 --
 .../openid_connect/rails/routes/mapping.rb    |  38 --
 .../doorkeeper/openid_connect/user_info.rb    |  37 --
 .../lib/doorkeeper/openid_connect/version.rb  |   7 -
 .../lib/doorkeeper/request/id_token.rb        |  19 -
 .../lib/doorkeeper/request/id_token_token.rb  |  19 -
 .../openid_connect/install_generator.rb       |  17 -
 .../openid_connect/migration_generator.rb     |  33 --
 .../openid_connect/templates/initializer.rb   |  72 ---
 .../openid_connect/templates/migration.rb.erb |  15 -
 .../controllers/discovery_controller_spec.rb  | 316 -------------
 .../authorizations_controller_spec.rb         | 433 ------------------
 ...authorized_applications_controller_spec.rb |  15 -
 .../controllers/userinfo_controller_spec.rb   |  65 ---
 .../spec/dummy/Rakefile                       |   8 -
 .../spec/dummy/app/assets/config/manifest.js  |   3 -
 .../spec/dummy/app/assets/images/.keep        |   0
 .../app/assets/javascripts/application.js     |  13 -
 .../app/assets/stylesheets/application.css    |  15 -
 .../app/channels/application_cable/channel.rb |   6 -
 .../channels/application_cable/connection.rb  |   6 -
 .../app/controllers/application_controller.rb |   5 -
 .../spec/dummy/app/controllers/concerns/.keep |   0
 .../dummy/app/helpers/application_helper.rb   |   4 -
 .../spec/dummy/app/jobs/application_job.rb    |   4 -
 .../dummy/app/mailers/application_mailer.rb   |   6 -
 .../dummy/app/models/application_record.rb    |   5 -
 .../spec/dummy/app/models/concerns/.keep      |   0
 .../spec/dummy/app/models/user.rb             |   7 -
 .../spec/dummy/bin/bundle                     |   5 -
 .../spec/dummy/bin/rails                      |   6 -
 .../spec/dummy/bin/rake                       |   6 -
 .../spec/dummy/bin/setup                      |  36 --
 .../spec/dummy/bin/update                     |  31 --
 .../spec/dummy/config.ru                      |   7 -
 .../spec/dummy/config/application.rb          |  16 -
 .../spec/dummy/config/boot.rb                 |   5 -
 .../spec/dummy/config/database.yml            |  26 --
 .../spec/dummy/config/environment.rb          |   5 -
 .../spec/dummy/config/environments/test.rb    |  32 --
 .../dummy/config/initializers/doorkeeper.rb   |  16 -
 .../initializers/doorkeeper_openid_connect.rb |  83 ----
 .../locales/doorkeeper_openid_connect.en.yml  |  23 -
 .../spec/dummy/config/routes.rb               |   6 -
 .../spec/dummy/config/secrets.yml             |  22 -
 .../db/migrate/20111122132257_create_users.rb |  11 -
 .../20120312140401_add_password_to_users.rb   |   7 -
 ...20151223192035_create_doorkeeper_tables.rb |  62 ---
 ...20151223200000_add_owner_to_application.rb |   9 -
 ...previous_refresh_token_to_access_tokens.rb |  13 -
 ...2204540_add_current_sign_in_at_to_users.rb |   7 -
 ...152859_add_confidential_to_applications.rb |  13 -
 .../db/migrate/20221122044143_enable_pkce.rb  |   8 -
 .../spec/dummy/db/schema.rb                   |  76 ---
 .../spec/dummy/lib/assets/.keep               |   0
 .../spec/dummy/log/.keep                      |   0
 .../spec/dummy/public/404.html                |  67 ---
 .../spec/dummy/public/422.html                |  67 ---
 .../spec/dummy/public/500.html                |  66 ---
 .../spec/dummy/public/favicon.ico             |   0
 .../spec/factories.rb                         |  35 --
 .../spec/lib/claims/claim_spec.rb             |  32 --
 .../spec/lib/config_spec.rb                   | 232 ----------
 .../spec/lib/id_token_spec.rb                 |  99 ----
 .../spec/lib/id_token_token_spec.rb           |  36 --
 .../spec/lib/oauth/authorization/code_spec.rb |  55 ---
 .../oauth/authorization_code_request_spec.rb  |  43 --
 .../spec/lib/oauth/id_token_request_spec.rb   |  78 ----
 .../spec/lib/oauth/id_token_response_spec.rb  |  60 ---
 .../lib/oauth/id_token_token_request_spec.rb  |  49 --
 .../lib/oauth/id_token_token_response_spec.rb |  56 ---
 .../password_access_token_request_spec.rb     |  35 --
 .../spec/lib/oauth/pre_authorization_spec.rb  |  54 ---
 .../spec/lib/oauth/token_response_spec.rb     |  53 ---
 .../spec/lib/openid_connect_spec.rb           |  68 ---
 .../spec/lib/routes_spec.rb                   |  44 --
 .../spec/lib/user_info_spec.rb                |  55 ---
 .../spec/models/access_grant_spec.rb          |  39 --
 .../spec/models/request_spec.rb               |  32 --
 .../spec/rails_helper.rb                      |  59 ---
 .../spec/spec_helper.rb                       |  85 ----
 .../spec/support/doorkeeper_configuration.rb  |  42 --
 130 files changed, 11 insertions(+), 5305 deletions(-)
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/.gitlab-ci.yml
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/CHANGELOG.md
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/CONTRIBUTING.md
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/Gemfile
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/LICENSE.txt
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/README.md
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/Rakefile
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/app/controllers/concerns/doorkeeper/openid_connect/authorizations_extension.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/app/controllers/doorkeeper/openid_connect/discovery_controller.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/app/controllers/doorkeeper/openid_connect/userinfo_controller.rb
 delete mode 100755 vendor/gems/doorkeeper-openid_connect/bin/console
 delete mode 100755 vendor/gems/doorkeeper-openid_connect/bin/setup
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/config/locales/en.yml
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/doorkeeper-openid_connect.gemspec
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/gemfiles/doorkeeper_master.gemfile
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/gemfiles/rails_6.0.gemfile
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/gemfiles/rails_6.1.gemfile
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/gemfiles/rails_7.0.gemfile
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_request.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_response.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_token_request.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_token_response.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/aggregated_claim.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/claim.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/distributed_claim.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/normal_claim.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims_builder.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/config.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/engine.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/errors.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/helpers/controller.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/id_token.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/id_token_token.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/authorization/code.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/authorization_code_request.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/password_access_token_request.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/pre_authorization.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/token_response.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/orm/active_record.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/orm/active_record/access_grant.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/orm/active_record/request.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/rails/routes.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/rails/routes/mapper.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/rails/routes/mapping.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/user_info.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/version.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/request/id_token.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/request/id_token_token.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/install_generator.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/migration_generator.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/templates/initializer.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/templates/migration.rb.erb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/controllers/discovery_controller_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/controllers/doorkeeper/authorizations_controller_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/controllers/doorkeeper/authorized_applications_controller_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/controllers/userinfo_controller_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/Rakefile
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/config/manifest.js
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/images/.keep
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/javascripts/application.js
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/stylesheets/application.css
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/channels/application_cable/channel.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/channels/application_cable/connection.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/controllers/application_controller.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/controllers/concerns/.keep
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/helpers/application_helper.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/jobs/application_job.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/mailers/application_mailer.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/models/application_record.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/models/concerns/.keep
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/app/models/user.rb
 delete mode 100755 vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/bundle
 delete mode 100755 vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/rails
 delete mode 100755 vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/rake
 delete mode 100755 vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/setup
 delete mode 100755 vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/update
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/config.ru
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/config/application.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/config/boot.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/config/database.yml
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/config/environment.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/config/environments/test.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/config/initializers/doorkeeper.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/config/initializers/doorkeeper_openid_connect.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/config/locales/doorkeeper_openid_connect.en.yml
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/config/routes.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/config/secrets.yml
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20111122132257_create_users.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20151223200000_add_owner_to_application.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20160320211015_add_previous_refresh_token_to_access_tokens.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20161102204540_add_current_sign_in_at_to_users.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20180904152859_add_confidential_to_applications.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20221122044143_enable_pkce.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/db/schema.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/lib/assets/.keep
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/log/.keep
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/public/404.html
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/public/422.html
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/public/500.html
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/dummy/public/favicon.ico
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/factories.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/claims/claim_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/config_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/id_token_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/id_token_token_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/authorization/code_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/authorization_code_request_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_request_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_response_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_token_request_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_token_response_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/password_access_token_request_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/pre_authorization_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/token_response_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/openid_connect_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/routes_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/lib/user_info_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/models/access_grant_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/models/request_spec.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/rails_helper.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/spec_helper.rb
 delete mode 100644 vendor/gems/doorkeeper-openid_connect/spec/support/doorkeeper_configuration.rb

diff --git a/Gemfile b/Gemfile
index a806b19d18d20..e7d4da8749e0f 100644
--- a/Gemfile
+++ b/Gemfile
@@ -90,9 +90,7 @@ gem 'devise', '~> 4.9.3', feature_category: :system_access
 gem 'devise-pbkdf2-encryptable', '~> 0.0.0', path: 'vendor/gems/devise-pbkdf2-encryptable' # rubocop:todo Gemfile/MissingFeatureCategory
 gem 'bcrypt', '~> 3.1', '>= 3.1.14' # rubocop:todo Gemfile/MissingFeatureCategory
 gem 'doorkeeper', '~> 5.8', '>= 5.8.0', feature_category: :system_access
-gem 'doorkeeper-openid_connect', '~> 1.8',
-  path: 'vendor/gems/doorkeeper-openid_connect', # See Gem README for why this is vendored
-  feature_category: :system_access
+gem 'doorkeeper-openid_connect', '~> 1.8.10', feature_category: :system_access
 gem 'doorkeeper-device_authorization_grant', '~> 1.0.0', feature_category: :system_access
 gem 'rexml', '~> 3.3.2' # rubocop:todo Gemfile/MissingFeatureCategory
 gem 'ruby-saml', '~> 1.17.0', feature_category: :system_access
diff --git a/Gemfile.checksum b/Gemfile.checksum
index 715b8bb18fd44..62cbaf7d8cea0 100644
--- a/Gemfile.checksum
+++ b/Gemfile.checksum
@@ -130,6 +130,7 @@
 {"name":"domain_name","version":"0.5.20190701","platform":"ruby","checksum":"000a600454cb4a344769b2f10b531765ea7bd3a304fe47ed12e5ca1eab969851"},
 {"name":"doorkeeper","version":"5.8.0","platform":"ruby","checksum":"5abc747ee0eaa3140e165b41e937941f05d5ce5bcd8b8ed6718e6711623a8105"},
 {"name":"doorkeeper-device_authorization_grant","version":"1.0.3","platform":"ruby","checksum":"94c3ac12a0d50942850ecd58ed64298b397a5e903e8880cb68d4085600932679"},
+{"name":"doorkeeper-openid_connect","version":"1.8.10","platform":"ruby","checksum":"b28efaa9b52cbe9aca4efc825a7ef63cc950ae6a96f4a72ed8362f278a453742"},
 {"name":"dotenv","version":"2.7.6","platform":"ruby","checksum":"2451ed5e8e43776d7a787e51d6f8903b98e446146c7ad143d5678cc2c409d547"},
 {"name":"dry-cli","version":"1.0.0","platform":"ruby","checksum":"28ead169f872954dd08910eb8ead59cf86cd18b4aab321e8eeefe945749569f0"},
 {"name":"dry-core","version":"1.0.1","platform":"ruby","checksum":"f32f4245e0f54e787f3708584ed8f7545aaf8dd99072e36f169312468ec5450d"},
diff --git a/Gemfile.lock b/Gemfile.lock
index cafbc5f805e24..5bbec1508d5ee 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -159,13 +159,6 @@ PATH
   specs:
     diff_match_patch (0.1.0)
 
-PATH
-  remote: vendor/gems/doorkeeper-openid_connect
-  specs:
-    doorkeeper-openid_connect (1.8.9)
-      doorkeeper (>= 5.5, < 5.9)
-      jwt (>= 2.5)
-
 PATH
   remote: vendor/gems/gitlab-duo-workflow-service-client
   specs:
@@ -546,6 +539,9 @@ GEM
       railties (>= 5)
     doorkeeper-device_authorization_grant (1.0.3)
       doorkeeper (~> 5.5)
+    doorkeeper-openid_connect (1.8.10)
+      doorkeeper (>= 5.5, < 5.9)
+      jwt (>= 2.5)
     dotenv (2.7.6)
     dry-cli (1.0.0)
     dry-core (1.0.1)
@@ -2038,7 +2034,7 @@ DEPENDENCIES
   discordrb-webhooks (~> 3.5)
   doorkeeper (~> 5.8, >= 5.8.0)
   doorkeeper-device_authorization_grant (~> 1.0.0)
-  doorkeeper-openid_connect (~> 1.8)!
+  doorkeeper-openid_connect (~> 1.8.10)
   duo_api (~> 1.3)
   ed25519 (~> 1.3.0)
   elasticsearch-api (= 7.17.11)
diff --git a/Gemfile.next.checksum b/Gemfile.next.checksum
index f43e75c5589d0..988884683c53b 100644
--- a/Gemfile.next.checksum
+++ b/Gemfile.next.checksum
@@ -130,6 +130,7 @@
 {"name":"domain_name","version":"0.5.20190701","platform":"ruby","checksum":"000a600454cb4a344769b2f10b531765ea7bd3a304fe47ed12e5ca1eab969851"},
 {"name":"doorkeeper","version":"5.8.0","platform":"ruby","checksum":"5abc747ee0eaa3140e165b41e937941f05d5ce5bcd8b8ed6718e6711623a8105"},
 {"name":"doorkeeper-device_authorization_grant","version":"1.0.3","platform":"ruby","checksum":"94c3ac12a0d50942850ecd58ed64298b397a5e903e8880cb68d4085600932679"},
+{"name":"doorkeeper-openid_connect","version":"1.8.10","platform":"ruby","checksum":"b28efaa9b52cbe9aca4efc825a7ef63cc950ae6a96f4a72ed8362f278a453742"},
 {"name":"dotenv","version":"2.7.6","platform":"ruby","checksum":"2451ed5e8e43776d7a787e51d6f8903b98e446146c7ad143d5678cc2c409d547"},
 {"name":"drb","version":"2.2.1","platform":"ruby","checksum":"e9d472bf785f558b96b25358bae115646da0dbfd45107ad858b0bc0d935cb340"},
 {"name":"dry-cli","version":"1.0.0","platform":"ruby","checksum":"28ead169f872954dd08910eb8ead59cf86cd18b4aab321e8eeefe945749569f0"},
diff --git a/Gemfile.next.lock b/Gemfile.next.lock
index a89519fab5e26..acc56ec9c675d 100644
--- a/Gemfile.next.lock
+++ b/Gemfile.next.lock
@@ -159,13 +159,6 @@ PATH
   specs:
     diff_match_patch (0.1.0)
 
-PATH
-  remote: vendor/gems/doorkeeper-openid_connect
-  specs:
-    doorkeeper-openid_connect (1.8.9)
-      doorkeeper (>= 5.5, < 5.9)
-      jwt (>= 2.5)
-
 PATH
   remote: vendor/gems/gitlab-duo-workflow-service-client
   specs:
@@ -555,6 +548,9 @@ GEM
       railties (>= 5)
     doorkeeper-device_authorization_grant (1.0.3)
       doorkeeper (~> 5.5)
+    doorkeeper-openid_connect (1.8.10)
+      doorkeeper (>= 5.5, < 5.9)
+      jwt (>= 2.5)
     dotenv (2.7.6)
     drb (2.2.1)
     dry-cli (1.0.0)
@@ -2065,7 +2061,7 @@ DEPENDENCIES
   discordrb-webhooks (~> 3.5)
   doorkeeper (~> 5.8, >= 5.8.0)
   doorkeeper-device_authorization_grant (~> 1.0.0)
-  doorkeeper-openid_connect (~> 1.8)!
+  doorkeeper-openid_connect (~> 1.8.10)
   duo_api (~> 1.3)
   ed25519 (~> 1.3.0)
   elasticsearch-api (= 7.17.11)
diff --git a/vendor/gems/doorkeeper-openid_connect/.gitlab-ci.yml b/vendor/gems/doorkeeper-openid_connect/.gitlab-ci.yml
deleted file mode 100644
index 77259f8093d38..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/.gitlab-ci.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-include:
-  - local: gems/gem.gitlab-ci.yml
-    inputs:
-      gem_name: "doorkeeper-openid_connect"
-      gem_path_prefix: "vendor/gems/"
-      bundle_gemfiles: ['gemfiles/doorkeeper_master.gemfile']
-      bundle_version: "2.5.11"
-variables:
-  BUNDLE_FROZEN: "false"
diff --git a/vendor/gems/doorkeeper-openid_connect/CHANGELOG.md b/vendor/gems/doorkeeper-openid_connect/CHANGELOG.md
deleted file mode 100644
index 588ff986bd8b1..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/CHANGELOG.md
+++ /dev/null
@@ -1,288 +0,0 @@
-## Unreleased
-
-- [#PR ID] Add your changelog entry here.
-
-## v1.8.9 (2024-05-07)
-
-- Support Doorkeeper 5.7
-
-## v1.8.8 (2024-02-26)
-
-- [#201] Add back typ=JWT to header
-
-## v1.8.7 (2023-05-18)
-
-- [#198] Fully qualify `JWT::JWK::Thumbprint` constant with :: (thanks to @stanhu)
-
-## v1.8.6 (2023-05-12)
-
-- [#194] Default to RFC 7638 kid fingerprint generation (thanks to @stanhu).
-
-## v1.8.5 (2023-02-02)
-
-- [#186] Simplify gem configuration reusing Doorkeeper configuration option DSL (thanks to @nbulaj).
-- [#182] Drop support for Ruby 2.6 and Rails 5 (thanks to @sato11).
-- [#188] Fix dookeeper-jwt compatibility (thanks to @zavan).
-
-## v1.8.4 (2023-02-01)
-
-Note that v1.8.4 changed the default kid fingerprint generation from RFC 7638 to a format
-based on the SHA256 digest of the key element. To restore the previous behavior, upgrade to v1.8.6.
-
-- [#177] Replace `json-jwt` with `ruby-jwt` to align with doorkeeper-jwt (thanks to @kristof-mattei).
-- [#185] Don't call active_record_options for Doorkeeper >= 5.6.3 (thanks to @zavan).
-- [#183] Stop render consent screen when user is not logged-in (thanks to @nov).
-
-## v1.8.3 (2022-12-02)
-
-- [#180] Add PKCE support to OpenID discovery endpoint (thanks to @stanhu).
-
-## v1.8.2 (2022-07-13)
-
-- [#168] Allow to use custom doorkeeper access grant model (thanks @nov).
-- [#170] Controllers inherit `Doorkeeper::AppliactionMetalController` (thanks @sato11).
-- [#171] Correctly override `AuthorizationsController` params (thanks to @nbulaj).
-
-## v1.8.1 (2022-02-09)
-
-- [#153] Fix ArgumentError caused by client credential validation introduced in Doorkeeper 5.5.1 (thanks to @CircumnavigatingFlatEarther)
-- [#161] Fix .well-known/openid-connect issuer (respond to block if provided) (thanks to @fkowal).
-- [#152] Expose oauth-authorization-server in routes (thanks to @mitar)
-
-## v1.8.0 (2021-05-11)
-
-No changes from v1.8.0-rc1.
-
-## v1.8.0-rc1 (2021-04-20)
-
-### Upgrading
-
-This gem now requires Doorkeeper 5.5 and Ruby 2.5.
-
-### Changes
-
-- [#138] Support form_post response mode (thanks to @linhdangduy)
-- [#144] Support block syntax for `issuer` configuration (thanks to @maxxsnake)
-- [#145] Register token flows with the strategy instead of the token class (thanks to @paukul)
-
-## v1.7.5 (2020-12-15)
-
-### Changes
-
-- [#126] Add discovery_url_options option for discovery endpoints URL generation (thanks to @phlegx)
-
-### Bugfixes
-
-- [#123] Remove reference to ApplicationRecord (thanks to @wheeyls)
-- [#124] Clone doorkeeper.grant_flows array before appending 'refresh_token' (thanks to @davidbasalla)
-- [#129] Avoid to use the config alias while supporting Doorkeeper 5.2 (thanks to @kymmt90)
-
-## v1.7.4 (2020-07-06)
-
-- [#119] Execute end_session_endpoint in the controllers context (thanks to @joeljunstrom)
-
-## v1.7.3 (2020-07-06)
-
-- [#111] Add configuration callback `select_account_for_resource_owner` to support the `prompt=select_account` param
-- [#112] Add grant_types_supported to discovery response
-- [#114] Fix user_info endpoint when used in api mode
-- [#116] Support Doorkeeper API (> 5.4) for registering custom grant flows.
-- [#117] Fix migration template to use Rails migrations DSL for association.
-- [#118] Use fragment urls for implicit flow error redirects (thanks to @joeljunstrom)
-
-## v1.7.2 (2020-05-20)
-
-### Changes
-
-- [#108] Add support for Doorkeeper 5.4
-- [#103] Add support for end_session_endpoint
-- [#109] Test against Ruby 2.7 & Rails 6.x
-
-## v1.7.1 (2020-02-07)
-
-### Upgrading
-
-This version adds `on_delete: :cascade` to the migration template for the `oauth_openid_requests` table, in order to fix #82.
-
-For existing installations, you should add a new migration in your application to drop the existing foreign key and replace it with a new one with `on_delete: :cascade` included. Depending on the database you're using and the size of your application this might bring up some concerns, but in most cases the following should be sufficient:
-
-```ruby
-class UpdateOauthOpenIdRequestsForeignKeys < ActiveRecord::Migration[5.2]
-  def up
-    remove_foreign_key(:oauth_openid_requests, column: :access_grant_id)
-    add_foreign_key(:oauth_openid_requests, :oauth_access_grants, column: :access_grant_id, on_delete: :cascade)
-  end
-
-  def down
-    remove_foreign_key(:oauth_openid_requests, column: :access_grant_id)
-    add_foreign_key(:oauth_openid_requests, :oauth_access_grants, column: :access_grant_id)
-  end
-end
-```
-
-### Bugfixes
-
-- [#96] Bump `json-jwt` because of CVE-2019-18848 (thanks to @leleabhinav)
-- [#97] Fixes for compatibility with Doorkeeper 5.2 (thanks to @linhdangduy)
-- [#98] Cascade deletes from `oauth_openid_requests` to `oauth_access_grants` (thanks to @manojmj92)
-- [#99] Fix `audience` claim when application is not set on access token (thanks to @ionut998)
-
-## v1.7.0 (2019-11-04)
-
-### Changes
-
-- [#85] This gem now requires Doorkeeper 5.2, Rails 5, and Ruby 2.4
-
-## v1.6.3 (2019-09-24)
-
-### Changes
-
-- [#81] Allow silent authentication without user consent (thanks to @jarosan)
-- Don't support Doorkeeper >= 5.2 due to breaking changes
-
-## v1.6.2 (2019-08-09)
-
-### Bugfixes
-
-- [#80] Check for client presence in controller, fixes a 500 error when `client_id` is missing (thanks to @cincospenguinos @urnf @isabellechalhoub)
-
-## v1.6.1 (2019-06-07)
-
-### Bugfixes
-
-- [#75] Fix return value for `after_successful_response` (thanks to @daveed)
-
-### Changes
-
-- [#72] Add `revocation_endpoint` and `introspection_endpoint` to discovery response (thanks to @scarfacedeb)
-
-## v1.6.0 (2019-03-06)
-
-### Changes
-
-- [#70] This gem now requires Doorkeeper 5.0, and actually has done so since v1.5.4 (thanks to @michaelglass)
-
-## v1.5.5 (2019-03-03)
-
-- [#69] Return `crv` parameter for EC keys (thanks to @marco-nicola)
-
-## v1.5.4 (2019-02-15)
-
-### Bugfixes
-
-- [#66] Fix an open redirect vulnerability ([CVE-2019-9837](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9837), thanks to @meagar)
-- [#67] Don't delete existing tokens with `prompt=consent` (thanks to @nov)
-
-### Changes
-
-- [#62] Support customization of redirect params in `id_token` and `id_token token` responses (thanks to @meagar)
-
-## v1.5.3 (2019-01-19)
-
-### Bugfixes
-
-- [#60] Don't break native authorization in Doorkeeper 5.x
-
-### Changes
-
-- [#58] Use versioned migrations for Rails 5.x (thanks to @tvongaza)
-
-## v1.5.2 (2018-09-04)
-
-### Changes
-
-- [#56] The previous release was a bit premature, this fixes some compatibility issues with Doorkeeper 5.x
-
-## v1.5.1 (2018-09-04)
-
-### Changes
-
-- [#55] This gem is now compatible with Doorkeeper 5.x
-
-## v1.5.0 (2018-06-27)
-
-### Features
-
-- [#52] Custom claims can now also be returned directly in the ID token, see the updated README for usage instructions
-
-## v1.4.0 (2018-05-31)
-
-### Upgrading
-
-- Support for Ruby versions older than 2.3 was dropped
-
-### Features
-
-- Redirect errors per Section 3.1.2.6 of OpenID Connect 1.0 (by @ryands)
-- Set `id_token` when it's nil in token response (it's used in `refresh_token` requests) (by @Miouge1)
-
-## v1.3.0 (2018-03-05)
-
-### Features
-
-- Support for Implicit Flow (`response_type=id_token` and `response_type=id_token token`),
-  see the updated README for usage instructions (by @nashby, @nhance and @stevenvegt)
-
-## v1.2.0 (2017-08-31)
-
-### Upgrading
-
-- The configuration setting `jws_private_key` was renamed to `signing_key`, you can still use the old name until it's removed in the next major release
-
-### Features
-
-- Support for pairwise subject identifiers (by @travisofthenorth)
-- Support for EC and HMAC signing algorithms (by @110y)
-- Claims now receive an optional third `access_token` argument which allow you to dynamically adjust claim values based on the client's token (by @gigr)
-
-### Bugfixes
-
-## v1.1.2 (2017-01-18)
-
-### Bugfixes
-
-- Fixes the `undefined local variable or method 'pre_auth'` error
-
-## v1.1.1 (2017-01-18)
-
-#### Upgrading
-
-- The configuration setting `jws_public_key` wasn't actually used, it's deprecated now and will be removed in the next major release
-- The undocumented shorthand `to_proc` syntax for defining claims (`claim :user, &:name`) is not supported anymore
-
-#### Features
-
-- Claims now receive an optional second `scopes` argument which allow you to dynamically adjust claim values based on the requesting applications' scopes (by @nbibler)
-- The `prompt` parameter values `login` and `consent` are now supported
-- The configuration setting `protocol` was added (by @gigr)
-
-#### Bugfixes
-
-- Standard Claims are now mapped correctly to their default scopes (by @tylerhunt)
-- Blank `nonce` parameters are now ignored
-
-#### Changes
-
-- `nil` values and empty strings are now removed from the UserInfo and IdToken responses
-- Allow `json-jwt` dependency at ~> 1.6. (by @nbibler)
-- Configuration blocks no longer internally use `instance_eval` which previously gave undocumented and unexpected `self` access to the caller (by @nbibler)
-
-## v1.1.0 (2016-11-30)
-
-This release is a general clean-up and adds support for some advanced OpenID Connect features.
-
-#### Upgrading
-
-- This version adds a table to store temporary nonces, use the generator `doorkeeper:openid_connect:migration` to create a migration
-- Implement the new configuration callbacks `auth_time_from_resource_owner` and `reauthenticate_resource_owner` to support advanced features
-
-#### Features
-
-- Add discovery endpoint	 ([a16caa8](/../../commit/a16caa8))
-- Add webfinger and keys endpoints for discovery	 ([f70898b](/../../commit/f70898b))
-- Add supported claims to discovery response	 ([1d8f9ea](/../../commit/1d8f9ea))
-- Support prompt=none parameter	 ([c775d8b](/../../commit/c775d8b))
-- Store and return nonces in IdToken responses	 ([d28ca8c](/../../commit/d28ca8c))
-- Add generator for initializer	 ([80399fd](/../../commit/80399fd))
-- Support max_age parameter	 ([aabe3aa](/../../commit/aabe3aa))
-- Respect scope grants in UserInfo response	 ([25f2170](/../../commit/25f2170))
diff --git a/vendor/gems/doorkeeper-openid_connect/CONTRIBUTING.md b/vendor/gems/doorkeeper-openid_connect/CONTRIBUTING.md
deleted file mode 100644
index 5cc59a017b27a..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/CONTRIBUTING.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Contributing
-
-## Workflow
-
-We are using the [Feature Branch Workflow (also known as GitHub Flow)](https://guides.github.com/introduction/flow/), and prefer delivery as pull requests.
-
-Our first line of defense is the [Travis CI](https://travis-ci.org/doorkeeper-gem/doorkeeper-openid_connect) build defined within [.travis.yml](.travis.yml) and triggered for every pull request.
-
-Create a feature branch:
-
-```sh
-git checkout -B feature/contributing
-```
-
-## Creating Good Commits
-
-The cardinal rule for creating good commits is to ensure there is only one
-"logical change" per commit. Why is this an important rule?
-
-* The smaller the amount of code being changed, the quicker & easier it is to
-  review & identify potential flaws.
-
-* If a change is found to be flawed later, it may be necessary to revert the
-  broken commit. This is much easier to do if there are not other unrelated
-  code changes entangled with the original commit.
-
-* When troubleshooting problems using Git's bisect capability, small well
-  defined changes will aid in isolating exactly where the code problem was
-  introduced.
-
-* When browsing history using Git annotate/blame, small well defined changes
-  also aid in isolating exactly where & why a piece of code came from.
-
-Things to avoid when creating commits:
-
-* Mixing whitespace changes with functional code changes.
-* Mixing two unrelated functional changes.
-* Sending large new features in a single giant commit.
-
-## Release process
-
-- Bump version in `lib/doorkeeper/openid_connect/version.rb`.
-- Update `CHANGELOG.md`.
-- Commit all changes.
-- Tag release and publish gem with `rake release`.
-- [Publish a new release on GitHub](https://github.com/doorkeeper-gem/doorkeeper-openid_connect/releases/new), using the created tag and the new entries in `CHANGELOG.md`.
diff --git a/vendor/gems/doorkeeper-openid_connect/Gemfile b/vendor/gems/doorkeeper-openid_connect/Gemfile
deleted file mode 100644
index 9a2cbd3fa5b25..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/Gemfile
+++ /dev/null
@@ -1,15 +0,0 @@
-# frozen_string_literal: true
-
-source 'https://rubygems.org'
-
-# use Rails version specified by environment
-ENV['rails'] ||= '6.0.0'
-gem 'rails', "~> #{ENV['rails']}"
-gem 'rails-controller-testing'
-
-gem 'rubocop', '~> 1.6'
-gem 'rubocop-performance', require: false
-gem 'rubocop-rails', require: false
-gem 'rubocop-rspec', require: false
-
-gemspec
diff --git a/vendor/gems/doorkeeper-openid_connect/LICENSE.txt b/vendor/gems/doorkeeper-openid_connect/LICENSE.txt
deleted file mode 100644
index 31b068d048f0c..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/LICENSE.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-MIT License
-
-Copyright (c) 2014 PlayOn! Sports
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/gems/doorkeeper-openid_connect/README.md b/vendor/gems/doorkeeper-openid_connect/README.md
deleted file mode 100644
index 9fde3a9515cb9..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/README.md
+++ /dev/null
@@ -1,342 +0,0 @@
-# Doorkeeper::OpenidConnect
-
-This is a fork of [doorkeeper-openid_connect](https://github.com/doorkeeper-gem/doorkeeper-openid_connect) to support:
-
-- Doorkeeper version 5.8.0
-- This gem can be unvendored once [PR 213](https://github.com/doorkeeper-gem/doorkeeper-openid_connect/pull/213) is merged and released.
-
-[![Build Status](https://github.com/doorkeeper-gem/doorkeeper-openid_connect/workflows/CI/badge.svg?branch=master)](https://github.com/doorkeeper-gem/doorkeeper-openid_connect/actions)
-[![Code Climate](https://codeclimate.com/github/doorkeeper-gem/doorkeeper-openid_connect.svg)](https://codeclimate.com/github/doorkeeper-gem/doorkeeper-openid_connect)
-[![Gem Version](https://badge.fury.io/rb/doorkeeper-openid_connect.svg)](https://rubygems.org/gems/doorkeeper-openid_connect)
-
-#### :warning: **This project is looking for maintainers, see [this issue](https://github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/89).**
-
-This library implements an [OpenID Connect](http://openid.net/connect/) authentication provider for Rails applications on top of the [Doorkeeper](https://github.com/doorkeeper-gem/doorkeeper) OAuth 2.0 framework.
-
-OpenID Connect is a single-sign-on and identity layer with a [growing list of server and client implementations](http://openid.net/developers/libraries/). If you're looking for a client in Ruby check out [omniauth_openid_connect](https://github.com/m0n9oose/omniauth_openid_connect/).
-
-## Table of Contents
-
-- [Status](#status)
-  - [Known Issues](#known-issues)
-  - [Example Applications](#example-applications)
-- [Installation](#installation)
-- [Configuration](#configuration)
-  - [Scopes](#scopes)
-  - [Claims](#claims)
-  - [Routes](#routes)
-  - [Nonces](#nonces)
-  - [Internationalization (I18n)](#internationalization-i18n)
-- [Development](#development)
-- [License](#license)
-- [Sponsors](#sponsors)
-
-## Status
-
-The following parts of [OpenID Connect Core 1.0](http://openid.net/specs/openid-connect-core-1_0.html) are currently supported:
-
-- [Authentication using the Authorization Code Flow](http://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth)
-- [Authentication using the Implicit Flow](http://openid.net/specs/openid-connect-core-1_0.html#ImplicitFlowAuth)
-- [Requesting Claims using Scope Values](http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims)
-- [UserInfo Endpoint](http://openid.net/specs/openid-connect-core-1_0.html#UserInfo)
-- [Normal Claims](http://openid.net/specs/openid-connect-core-1_0.html#NormalClaims)
-- [OAuth 2.0 Form Post Response Mode](https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html)
-
-In addition we also support most of [OpenID Connect Discovery 1.0](http://openid.net/specs/openid-connect-discovery-1_0.html) for automatic configuration discovery.
-
-Take a look at the [DiscoveryController](app/controllers/doorkeeper/openid_connect/discovery_controller.rb) for more details on supported features.
-
-### Known Issues
-
-- Doorkeeper's API mode (`Doorkeeper.configuration.api_only`) is not properly supported yet
-
-### Example Applications
-
-- [GitLab](https://gitlab.com/gitlab-org/gitlab-ce) ([original MR](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8018))
-- [Testing app for this gem](https://github.com/doorkeeper-gem/doorkeeper-openid_connect/tree/master/spec/dummy)
-
-## Installation
-
-Make sure your application is already set up with [Doorkeeper](https://github.com/doorkeeper-gem/doorkeeper#installation).
-
-Add this line to your application's `Gemfile` and run `bundle install`:
-
-```ruby
-gem 'doorkeeper-openid_connect'
-```
-
-Run the installation generator to update routes and create the initializer:
-
-```sh
-rails generate doorkeeper:openid_connect:install
-```
-
-Generate a migration for Active Record (other ORMs are currently not supported):
-
-```sh
-rails generate doorkeeper:openid_connect:migration
-rake db:migrate
-```
-
-If you're upgrading from an earlier version, check [CHANGELOG.md](CHANGELOG.md) for upgrade instructions.
-
-## Configuration
-
-Make sure you've [configured Doorkeeper](https://github.com/doorkeeper-gem/doorkeeper#configuration) before continuing.
-
-Verify your settings in `config/initializers/doorkeeper.rb`:
-
-- `resource_owner_authenticator`
-  - This callback needs to returns a falsey value if the current user can't be determined:
-
-    ```ruby
-    resource_owner_authenticator do
-      if current_user
-        current_user
-      else
-        redirect_to(new_user_session_url)
-        nil
-      end
-    end
-    ```
-
-- `grant_flows`
-  - If you want to use `id_token` or `id_token token` response types you need to add `implicit_oidc` to `grant_flows`:
-
-    ```ruby
-    grant_flows %w(authorization_code implicit_oidc)
-    ```
-
-The following settings are required in `config/initializers/doorkeeper_openid_connect.rb`:
-
-- `issuer`
-  - Identifier for the issuer of the response (i.e. your application URL). The value is a case sensitive URL using the `https` scheme that contains scheme, host, and optionally, port number and path components and no query or fragment components.
-  - You can either pass a string value, or a block to generate the issuer dynamically based on the `resource_owner` and `application` or [request](app/controllers/doorkeeper/openid_connect/discovery_controller.rb#L123) passed to the block.
-- `subject`
-  - Identifier for the resource owner (i.e. the authenticated user). A locally unique and never reassigned identifier within the issuer for the end-user, which is intended to be consumed by the client. The value is a case-sensitive string and must not exceed 255 ASCII characters in length.
-  - The database ID of the user is an acceptable choice if you don't mind leaking that information.
-  - If you want to provide a different subject identifier to each client, use [pairwise subject identifier](http://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes) with configurations like below.
-
-    ```ruby
-    # config/initializers/doorkeeper_openid_connect.rb
-    Doorkeeper::OpenidConnect.configure do
-    # ...
-      subject_types_supported [:pairwise]
-
-      subject do |resource_owner, application|
-        Digest::SHA256.hexdigest("#{resource_owner.id}#{URI.parse(application.redirect_uri).host}#{'your_secret_salt'}")
-      end
-    # ...
-    end
-    ```
-
-- `signing_key`
-  - Private key to be used for [JSON Web Signature](https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-31).
-  - You can generate a private key with the `openssl` command, see e.g. [Generate an RSA keypair using OpenSSL](https://en.wikibooks.org/wiki/Cryptography/Generate_a_keypair_using_OpenSSL).
-  - You should not commit the key to your repository, but use an external file (in combination with `File.read`) and/or the [dotenv-rails](https://github.com/bkeepers/dotenv) gem (in combination with `ENV[...]`).
-- `signing_algorithm`
-  - The encryption type of the private key which defaults to `:rs256`. The list of supported algorithms can be found [here](https://github.com/nov/json-jwt/wiki/JWE#supported-algorithms)
-- `resource_owner_from_access_token`
-  - Defines how to translate the Doorkeeper access token to a resource owner model.
-
-The following settings are optional, but recommended for better client compatibility:
-
-- `auth_time_from_resource_owner`
-  - Returns the time of the user's last login, this can be a `Time`, `DateTime`, or any other class that responds to `to_i`
-  - Required to support the `max_age` parameter and the `auth_time` claim.
-- `reauthenticate_resource_owner`
-  - Defines how to trigger reauthentication for the current user (e.g. display a password prompt, or sign-out the user and redirect to the login form).
-  - Required to support the `max_age` and `prompt=login` parameters.
-  - The block is executed in the controller's scope, so you have access to methods like `params`, `redirect_to` etc.
-- `select_account_for_resource_owner`
-  - Defines how to trigger account selection to choose the current login user.
-  - Required to support the `prompt=select_account` parameter.
-  - The block is executed in the controller's scope, so you have access to methods like `params`, `redirect_to` etc.
-
-The following settings are optional:
-
-- `expiration`
-  - Expiration time after which the ID Token must not be accepted for processing by clients.
-  - The default is 120 seconds
-
-- `protocol`
-  - The protocol to use when generating URIs for the discovery endpoints.
-  - The default is `https` for production, and `http` for all other environments
-  - Note that the OIDC specification mandates HTTPS, so you shouldn't change this
-    for production environments unless you have a really good reason!
-
-- `end_session_endpoint`
-  - The URL that the user is redirected to after ending the session on the client.
-  - Used by implementations like <https://github.com/IdentityModel/oidc-client-js>.
-  - The block is executed in the controller's scope, so you have access to your route helpers.
-
-- `discovery_url_options`
-  - The URL options for every available endpoint to use when generating the endpoint URL in the
-    discovery response. Available endpoints: `authorization`, `token`, `revocation`,
-    `introspection`, `userinfo`, `jwks`, `webfinger`.
-  - This option requires option keys with an available endpoint and
-    [URL options](https://api.rubyonrails.org/v6.0.3.3/classes/ActionDispatch/Routing/UrlFor.html#method-i-url_for)
-    as value.
-  - The default is to use the request host, just like all the other URLs in the discovery response.
-  - This is useful when you want endpoints to use a different URL than other requests.
-    For example, if your Doorkeeper server is behind a firewall with other servers, you might want
-    other servers to use an "internal" URL to communicate with Doorkeeper, but you want to present
-    an "external" URL to end-users for authentication requests. Note that this setting does not
-    actually change the URL that your Doorkeeper server responds on - that is outside the scope of
-    Doorkeeper.
-
-    ```ruby
-    # config/initializers/doorkeeper_openid_connect.rb
-    Doorkeeper::OpenidConnect.configure do
-    # ...
-      discovery_url_options do |request|
-        {
-          authorization: { host: 'host.example.com' },
-          jwks:          { protocol: request.ssl? ? :https : :http }
-        }
-      end
-    # ...
-    end
-    ```
-
-### Scopes
-
-To perform authentication over OpenID Connect, an OAuth client needs to request the `openid` scope. This scope needs to be enabled using either `optional_scopes` in the global Doorkeeper configuration in `config/initializers/doorkeeper.rb`, or by adding it to any OAuth application's `scope` attribute.
-
-> Note that any application defining its own scopes won't inherit the scopes defined in the initializer, so you might have to update existing applications as well.
->
-> See [Using Scopes](https://github.com/doorkeeper-gem/doorkeeper/wiki/Using-Scopes) in the Doorkeeper wiki for more information.
-
-### Claims
-
-Claims can be defined in a `claims` block inside `config/initializers/doorkeeper_openid_connect.rb`:
-
-```ruby
-Doorkeeper::OpenidConnect.configure do
-  claims do
-    claim :email do |resource_owner|
-      resource_owner.email
-    end
-
-    claim :full_name do |resource_owner|
-      "#{resource_owner.first_name} #{resource_owner.last_name}"
-    end
-
-    claim :preferred_username, scope: :openid do |resource_owner, scopes, access_token|
-      # Pass the resource_owner's preferred_username if the application has
-      # `profile` scope access. Otherwise, provide a more generic alternative.
-      scopes.exists?(:profile) ? resource_owner.preferred_username : "summer-sun-9449"
-    end
-
-    claim :groups, response: [:id_token, :user_info] do |resource_owner|
-      resource_owner.groups
-    end
-  end
-end
-```
-
-Each claim block will be passed:
-
-- the `resource_owner`, which is the return value of `resource_owner_authenticator` in your initializer
-- the `scopes` granted by the access token, which is an instance of `Doorkeeper::OAuth::Scopes`
-- the `access_token` itself, which is an instance of `Doorkeeper::AccessToken`
-
-By default all custom claims are only returned from the `UserInfo` endpoint and not included in the ID token. You can optionally pass a `response:` keyword with one or both of the symbols `:id_token` or `:user_info` to specify where the claim should be returned.
-
-You can also pass a `scope:` keyword argument on each claim to specify which OAuth scope should be required to access the claim. If you define any of the defined [Standard Claims](http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) they will by default use their [corresponding scopes](http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims) (`profile`, `email`, `address` and `phone`), and any other claims will by default use the `profile` scope. Again, to use any of these scopes you need to enable them as described above.
-
-### Routes
-
-The installation generator will update your `config/routes.rb` to define all required routes:
-
-``` ruby
-Rails.application.routes.draw do
-  use_doorkeeper_openid_connect
-  # your routes
-end
-```
-
-This will mount the following routes:
-
-```
-GET   /oauth/userinfo
-POST  /oauth/userinfo
-GET   /oauth/discovery/keys
-GET   /.well-known/openid-configuration
-GET   /.well-known/webfinger
-```
-
-With the exception of the hard-coded `/.well-known` paths (see [RFC 5785](https://tools.ietf.org/html/rfc5785)) you can customize routes in the same way as with Doorkeeper, please refer to [this page on their wiki](https://github.com/doorkeeper-gem/doorkeeper/wiki/Customizing-routes#version--05-1).
-
-### Nonces
-
-To support clients who send nonces you have to tweak Doorkeeper's authorization view so the parameter is passed on.
-
-If you don't already have custom templates, run this generator in your Rails application to add them:
-
-```sh
-rails generate doorkeeper:views
-```
-
-Then tweak the template as follows:
-
-```patch
---- i/app/views/doorkeeper/authorizations/new.html.erb
-+++ w/app/views/doorkeeper/authorizations/new.html.erb
-@@ -26,6 +26,7 @@
-       <%= hidden_field_tag :state, @pre_auth.state %>
-       <%= hidden_field_tag :response_type, @pre_auth.response_type %>
-       <%= hidden_field_tag :scope, @pre_auth.scope %>
-+      <%= hidden_field_tag :nonce, @pre_auth.nonce %>
-       <%= submit_tag t('doorkeeper.authorizations.buttons.authorize'), class: "btn btn-success btn-lg btn-block" %>
-     <% end %>
-     <%= form_tag oauth_authorization_path, method: :delete do %>
-@@ -34,6 +35,7 @@
-       <%= hidden_field_tag :state, @pre_auth.state %>
-       <%= hidden_field_tag :response_type, @pre_auth.response_type %>
-       <%= hidden_field_tag :scope, @pre_auth.scope %>
-+      <%= hidden_field_tag :nonce, @pre_auth.nonce %>
-       <%= submit_tag t('doorkeeper.authorizations.buttons.deny'), class: "btn btn-danger btn-lg btn-block" %>
-     <% end %>
-   </div>
-```
-
-### Internationalization (I18n)
-
-We use Rails locale files for error messages and scope descriptions, see [config/locales/en.yml](config/locales/en.yml). You can override these by adding them to your own translations in `config/locale`.
-
-## Development
-
-Run `bundle install` to setup all development dependencies.
-
-To run all specs:
-
-```sh
-bundle exec rake spec
-```
-
-To generate and run migrations in the test application:
-
-```sh
-bundle exec rake migrate
-```
-
-To run the local engine server:
-
-```sh
-bundle exec rake server
-```
-
-By default, the latest Rails version is used. To use a specific version run:
-
-```
-rails=4.2.0 bundle update
-```
-
-## License
-
-Doorkeeper::OpenidConnect is released under the [MIT License](http://www.opensource.org/licenses/MIT).
-
-## Sponsors
-
-Initial development of this project was sponsored by [PlayOn! Sports](https://github.com/playon).
diff --git a/vendor/gems/doorkeeper-openid_connect/Rakefile b/vendor/gems/doorkeeper-openid_connect/Rakefile
deleted file mode 100644
index a6fe1e73c4d57..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/Rakefile
+++ /dev/null
@@ -1,26 +0,0 @@
-# frozen_string_literal: true
-
-ENV['RAILS_ENV'] ||= 'test'
-
-require 'bundler/gem_tasks'
-require 'rspec/core/rake_task'
-
-RSpec::Core::RakeTask.new
-
-task default: :spec
-task test: :spec
-
-desc 'Generate and run migrations in the test application'
-task :migrate do
-  Dir.chdir('spec/dummy') do
-    system('bin/rails generate doorkeeper:openid_connect:migration')
-    system('bin/rake db:migrate')
-  end
-end
-
-desc 'Run server in the test application'
-task :server do
-  Dir.chdir('spec/dummy') do
-    system('bin/rails server')
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/app/controllers/concerns/doorkeeper/openid_connect/authorizations_extension.rb b/vendor/gems/doorkeeper-openid_connect/app/controllers/concerns/doorkeeper/openid_connect/authorizations_extension.rb
deleted file mode 100644
index 6a906b7d1a762..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/app/controllers/concerns/doorkeeper/openid_connect/authorizations_extension.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-module Doorkeeper
-  module OpenidConnect
-    module AuthorizationsExtension
-      private
-
-      def pre_auth_param_fields
-        super.append(:nonce)
-      end
-    end
-  end
-end
-
diff --git a/vendor/gems/doorkeeper-openid_connect/app/controllers/doorkeeper/openid_connect/discovery_controller.rb b/vendor/gems/doorkeeper-openid_connect/app/controllers/doorkeeper/openid_connect/discovery_controller.rb
deleted file mode 100644
index f834139c596a4..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/app/controllers/doorkeeper/openid_connect/discovery_controller.rb
+++ /dev/null
@@ -1,146 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    class DiscoveryController < ::Doorkeeper::ApplicationMetalController
-      include Doorkeeper::Helpers::Controller
-
-      WEBFINGER_RELATION = 'http://openid.net/specs/connect/1.0/issuer'
-
-      def provider
-        render json: provider_response
-      end
-
-      def webfinger
-        render json: webfinger_response
-      end
-
-      def keys
-        render json: keys_response
-      end
-
-      private
-
-      def provider_response
-        doorkeeper = ::Doorkeeper.configuration
-        openid_connect = ::Doorkeeper::OpenidConnect.configuration
-
-        {
-          issuer: issuer,
-          authorization_endpoint: oauth_authorization_url(authorization_url_options),
-          token_endpoint: oauth_token_url(token_url_options),
-          revocation_endpoint: oauth_revoke_url(revocation_url_options),
-          introspection_endpoint: respond_to?(:oauth_introspect_url) ? oauth_introspect_url(introspection_url_options) : nil,
-          userinfo_endpoint: oauth_userinfo_url(userinfo_url_options),
-          jwks_uri: oauth_discovery_keys_url(jwks_url_options),
-          end_session_endpoint: instance_exec(&openid_connect.end_session_endpoint),
-
-          scopes_supported: doorkeeper.scopes,
-
-          # TODO: support id_token response type
-          response_types_supported: doorkeeper.authorization_response_types,
-          response_modes_supported: response_modes_supported(doorkeeper),
-          grant_types_supported: grant_types_supported(doorkeeper),
-
-          # TODO: look into doorkeeper-jwt_assertion for these
-          #  'client_secret_jwt',
-          #  'private_key_jwt'
-          token_endpoint_auth_methods_supported: %w[client_secret_basic client_secret_post],
-
-          subject_types_supported: openid_connect.subject_types_supported,
-
-          id_token_signing_alg_values_supported: [
-            ::Doorkeeper::OpenidConnect.signing_algorithm
-          ],
-
-          claim_types_supported: [
-            'normal',
-
-            # TODO: support these
-            # 'aggregated',
-            # 'distributed',
-          ],
-
-          claims_supported: %w[
-            iss
-            sub
-            aud
-            exp
-            iat
-          ] | openid_connect.claims.to_h.keys,
-
-          code_challenge_methods_supported: code_challenge_methods_supported(doorkeeper),
-        }.compact
-      end
-
-      def grant_types_supported(doorkeeper)
-        grant_types_supported = doorkeeper.grant_flows.dup
-        grant_types_supported << 'refresh_token' if doorkeeper.refresh_token_enabled?
-        grant_types_supported
-      end
-
-      def response_modes_supported(doorkeeper)
-        doorkeeper.authorization_response_flows.flat_map(&:response_mode_matches).uniq
-      end
-
-      def code_challenge_methods_supported(doorkeeper)
-        return unless doorkeeper.access_grant_model.pkce_supported?
-
-        %w[plain S256]
-      end
-
-      def webfinger_response
-        {
-          subject: params.require(:resource),
-          links: [
-            {
-              rel: WEBFINGER_RELATION,
-              href: root_url(webfinger_url_options),
-            }
-          ]
-        }
-      end
-
-      def keys_response
-        signing_key = Doorkeeper::OpenidConnect.signing_key_normalized
-
-        {
-          keys: [
-            signing_key.merge(
-              use: 'sig',
-              alg: Doorkeeper::OpenidConnect.signing_algorithm
-            )
-          ]
-        }
-      end
-
-      def protocol
-        Doorkeeper::OpenidConnect.configuration.protocol.call
-      end
-
-      def discovery_url_options
-        Doorkeeper::OpenidConnect.configuration.discovery_url_options.call(request)
-      end
-
-      def discovery_url_default_options
-        {
-          protocol: protocol
-        }
-      end
-
-      def issuer
-        if Doorkeeper::OpenidConnect.configuration.issuer.respond_to?(:call)
-          Doorkeeper::OpenidConnect.configuration.issuer.call(request).to_s
-        else
-          Doorkeeper::OpenidConnect.configuration.issuer
-        end
-      end
-
-      %i[authorization token revocation introspection userinfo jwks webfinger].each do |endpoint|
-        define_method :"#{endpoint}_url_options" do
-          discovery_url_default_options.merge(discovery_url_options[endpoint.to_sym] || {})
-        end
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/app/controllers/doorkeeper/openid_connect/userinfo_controller.rb b/vendor/gems/doorkeeper-openid_connect/app/controllers/doorkeeper/openid_connect/userinfo_controller.rb
deleted file mode 100644
index c6ace1aab2a7d..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/app/controllers/doorkeeper/openid_connect/userinfo_controller.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    class UserinfoController < ::Doorkeeper::ApplicationMetalController
-      before_action -> { doorkeeper_authorize! :openid }
-
-      def show
-        render json: Doorkeeper::OpenidConnect::UserInfo.new(doorkeeper_token), status: :ok
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/bin/console b/vendor/gems/doorkeeper-openid_connect/bin/console
deleted file mode 100755
index 8c3eaafde17c7..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/bin/console
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env ruby
-# frozen_string_literal: true
-
-require 'bundler/setup'
-Bundler.require :default
-
-require 'doorkeeper/openid_connect'
-
-require 'pry'
-Pry.start
diff --git a/vendor/gems/doorkeeper-openid_connect/bin/setup b/vendor/gems/doorkeeper-openid_connect/bin/setup
deleted file mode 100755
index dce67d860af47..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/bin/setup
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-set -euo pipefail
-IFS=$'\n\t'
-set -vx
-
-bundle install
-
-# Do any other automated setup that you need to do here
diff --git a/vendor/gems/doorkeeper-openid_connect/config/locales/en.yml b/vendor/gems/doorkeeper-openid_connect/config/locales/en.yml
deleted file mode 100644
index 1bed506b2cf19..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/config/locales/en.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-en:
-  doorkeeper:
-    scopes:
-      openid: 'Authenticate your account'
-      profile: 'View your profile information'
-      email: 'View your email address'
-      address: 'View your physical address'
-      phone: 'View your phone number'
-    errors:
-      messages:
-        login_required: 'The authorization server requires end-user authentication'
-        consent_required: 'The authorization server requires end-user consent'
-        interaction_required: 'The authorization server requires end-user interaction'
-        account_selection_required: 'The authorization server requires end-user account selection'
-    openid_connect:
-      errors:
-        messages:
-          # Configuration error messages
-          resource_owner_from_access_token_not_configured: 'Failure due to Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token missing configuration.'
-          auth_time_from_resource_owner_not_configured: 'Failure due to Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner missing configuration.'
-          reauthenticate_resource_owner_not_configured: 'Failure due to Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner missing configuration.'
-          select_account_for_resource_owner_not_configured: 'Failure due to Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner missing configuration.'
-          subject_not_configured: 'ID Token generation failed due to Doorkeeper::OpenidConnect.configure.subject missing configuration.'
diff --git a/vendor/gems/doorkeeper-openid_connect/doorkeeper-openid_connect.gemspec b/vendor/gems/doorkeeper-openid_connect/doorkeeper-openid_connect.gemspec
deleted file mode 100644
index bb050b8a6b4cf..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/doorkeeper-openid_connect.gemspec
+++ /dev/null
@@ -1,35 +0,0 @@
-# frozen_string_literal: true
-
-$LOAD_PATH.push File.expand_path('lib', __dir__)
-require 'doorkeeper/openid_connect/version'
-
-Gem::Specification.new do |spec|
-  spec.name          = 'doorkeeper-openid_connect'
-  spec.version       = Doorkeeper::OpenidConnect::VERSION
-  spec.authors       = ['Sam Dengler', 'Markus Koller', 'Nikita Bulai']
-  spec.email         = ['sam.dengler@playonsports.com', 'markus-koller@gmx.ch', 'bulajnikita@gmail.com']
-  spec.homepage      = 'https://github.com/doorkeeper-gem/doorkeeper-openid_connect'
-  spec.summary       = 'OpenID Connect extension for Doorkeeper.'
-  spec.description   = 'OpenID Connect extension for Doorkeeper.'
-  spec.license       = 'MIT'
-
-  spec.files = Dir[
-    "{app,config,lib}/**/*",
-    "CHANGELOG.md",
-    "LICENSE.txt",
-    "README.md",
-  ]
-  spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
-  spec.require_paths = ['lib']
-
-  spec.required_ruby_version = '>= 2.7'
-
-  spec.add_runtime_dependency 'doorkeeper', '>= 5.5', '< 5.9'
-  spec.add_runtime_dependency 'jwt', '>= 2.5'
-
-  spec.add_development_dependency 'conventional-changelog', '~> 1.2'
-  spec.add_development_dependency 'factory_bot'
-  spec.add_development_dependency 'pry-byebug'
-  spec.add_development_dependency 'rspec-rails'
-  spec.add_development_dependency 'sqlite3', '>= 1.3.6'
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/gemfiles/doorkeeper_master.gemfile b/vendor/gems/doorkeeper-openid_connect/gemfiles/doorkeeper_master.gemfile
deleted file mode 100644
index 5157472158ef6..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/gemfiles/doorkeeper_master.gemfile
+++ /dev/null
@@ -1,9 +0,0 @@
-# frozen_string_literal: true
-
-source 'https://rubygems.org'
-
-gem 'rails', '~> 7.0.0'
-gem 'rails-controller-testing'
-gem 'doorkeeper', git: 'https://github.com/doorkeeper-gem/doorkeeper.git'
-
-gemspec path: '../'
diff --git a/vendor/gems/doorkeeper-openid_connect/gemfiles/rails_6.0.gemfile b/vendor/gems/doorkeeper-openid_connect/gemfiles/rails_6.0.gemfile
deleted file mode 100644
index 39898608de60e..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/gemfiles/rails_6.0.gemfile
+++ /dev/null
@@ -1,8 +0,0 @@
-# frozen_string_literal: true
-
-source 'https://rubygems.org'
-
-gem 'rails', '~> 6.0.0'
-gem 'rails-controller-testing'
-
-gemspec path: '../'
diff --git a/vendor/gems/doorkeeper-openid_connect/gemfiles/rails_6.1.gemfile b/vendor/gems/doorkeeper-openid_connect/gemfiles/rails_6.1.gemfile
deleted file mode 100644
index df88b047af292..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/gemfiles/rails_6.1.gemfile
+++ /dev/null
@@ -1,8 +0,0 @@
-# frozen_string_literal: true
-
-source 'https://rubygems.org'
-
-gem 'rails', '~> 6.1.0'
-gem 'rails-controller-testing'
-
-gemspec path: '../'
diff --git a/vendor/gems/doorkeeper-openid_connect/gemfiles/rails_7.0.gemfile b/vendor/gems/doorkeeper-openid_connect/gemfiles/rails_7.0.gemfile
deleted file mode 100644
index 4032a5772ee33..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/gemfiles/rails_7.0.gemfile
+++ /dev/null
@@ -1,8 +0,0 @@
-# frozen_string_literal: true
-
-source 'https://rubygems.org'
-
-gem 'rails', '~> 7.0.0'
-gem 'rails-controller-testing'
-
-gemspec path: '../'
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_request.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_request.rb
deleted file mode 100644
index e6054508cc04c..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_request.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OAuth
-    class IdTokenRequest
-      attr_accessor :pre_auth, :auth, :resource_owner
-
-      def initialize(pre_auth, resource_owner)
-        @pre_auth       = pre_auth
-        @resource_owner = resource_owner
-      end
-
-      def authorize
-        @auth = Authorization::Token.new(pre_auth, resource_owner)
-        if @auth.respond_to?(:issue_token!)
-          @auth.issue_token!
-        else
-          @auth.issue_token
-        end
-        response
-      end
-
-      def deny
-        pre_auth.error = :access_denied
-        pre_auth.error_response
-      end
-
-      private
-
-      def response
-        id_token = Doorkeeper::OpenidConnect::IdToken.new(auth.token, pre_auth.nonce)
-
-        IdTokenResponse.new(pre_auth, auth, id_token)
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_response.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_response.rb
deleted file mode 100644
index a555f2d2d60e1..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_response.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OAuth
-    class IdTokenResponse < BaseResponse
-      include OAuth::Helpers
-
-      attr_accessor :pre_auth, :auth, :id_token
-
-      def initialize(pre_auth, auth, id_token)
-        @pre_auth = pre_auth
-        @auth = auth
-        @id_token = id_token
-      end
-
-      def redirectable?
-        true
-      end
-
-      def body
-        {
-          expires_in: auth.token.expires_in_seconds,
-          state: pre_auth.state,
-          id_token: id_token.as_jws_token
-        }
-      end
-
-      def redirect_uri
-        Authorization::URIBuilder.uri_with_fragment(pre_auth.redirect_uri, body)
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_token_request.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_token_request.rb
deleted file mode 100644
index cfcfb4ee01bbd..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_token_request.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OAuth
-    class IdTokenTokenRequest < IdTokenRequest
-      private
-
-      def response
-        id_token_token = Doorkeeper::OpenidConnect::IdTokenToken.new(auth.token, pre_auth.nonce)
-
-        IdTokenTokenResponse.new(pre_auth, auth, id_token_token)
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_token_response.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_token_response.rb
deleted file mode 100644
index ac212d5b5340a..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/oauth/id_token_token_response.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OAuth
-    class IdTokenTokenResponse < IdTokenResponse
-      def body
-        super.merge({
-          access_token: auth.token.token,
-          token_type: auth.token.token_type
-        })
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect.rb
deleted file mode 100644
index 4d0de3c3803cc..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-# frozen_string_literal: true
-
-require 'doorkeeper'
-require 'active_model'
-require 'jwt'
-
-require 'doorkeeper/request'
-require 'doorkeeper/request/id_token'
-require 'doorkeeper/request/id_token_token'
-require 'doorkeeper/oauth/id_token_request'
-require 'doorkeeper/oauth/id_token_token_request'
-require 'doorkeeper/oauth/id_token_response'
-require 'doorkeeper/oauth/id_token_token_response'
-
-require 'doorkeeper/openid_connect/claims_builder'
-require 'doorkeeper/openid_connect/claims/claim'
-require 'doorkeeper/openid_connect/claims/normal_claim'
-require 'doorkeeper/openid_connect/config'
-require 'doorkeeper/openid_connect/engine'
-require 'doorkeeper/openid_connect/errors'
-require 'doorkeeper/openid_connect/id_token'
-require 'doorkeeper/openid_connect/id_token_token'
-require 'doorkeeper/openid_connect/user_info'
-require 'doorkeeper/openid_connect/version'
-
-require 'doorkeeper/openid_connect/helpers/controller'
-
-require 'doorkeeper/openid_connect/oauth/authorization/code'
-require 'doorkeeper/openid_connect/oauth/authorization_code_request'
-require 'doorkeeper/openid_connect/oauth/password_access_token_request'
-require 'doorkeeper/openid_connect/oauth/pre_authorization'
-require 'doorkeeper/openid_connect/oauth/token_response'
-
-require 'doorkeeper/openid_connect/orm/active_record'
-
-require 'doorkeeper/openid_connect/rails/routes'
-
-module Doorkeeper
-  module OpenidConnect
-    def self.signing_algorithm
-      configuration.signing_algorithm.to_s.upcase.to_sym
-    end
-
-    def self.signing_key
-      key =
-        if %i[HS256 HS384 HS512].include?(signing_algorithm)
-          configuration.signing_key
-        else
-          OpenSSL::PKey.read(configuration.signing_key)
-        end
-      ::JWT::JWK.new(key, { kid_generator: ::JWT::JWK::Thumbprint })
-    end
-
-    def self.signing_key_normalized
-      signing_key.export
-    end
-
-    Doorkeeper::GrantFlow.register(
-      :id_token,
-      response_type_matches: 'id_token',
-      response_mode_matches: %w[fragment form_post],
-      response_type_strategy: Doorkeeper::Request::IdToken,
-    )
-
-    Doorkeeper::GrantFlow.register(
-      'id_token token',
-      response_type_matches: 'id_token token',
-      response_mode_matches: %w[fragment form_post],
-      response_type_strategy: Doorkeeper::Request::IdTokenToken,
-    )
-
-    Doorkeeper::GrantFlow.register_alias(
-      'implicit_oidc', as: ['implicit', 'id_token', 'id_token token']
-    )
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/aggregated_claim.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/aggregated_claim.rb
deleted file mode 100644
index 98732f49a22a6..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/aggregated_claim.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module Claims
-      class AggregatedClaim < Claim
-        attr_accessor :jwt
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/claim.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/claim.rb
deleted file mode 100644
index a0cfa8d4f6612..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/claim.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module Claims
-      class Claim
-        attr_accessor :name, :response, :scope
-
-        # http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims
-        # http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims
-        STANDARD_CLAIMS = {
-          profile: %i[
-            name family_name given_name middle_name nickname preferred_username
-            profile picture website gender birthdate zoneinfo locale updated_at
-          ],
-          email: %i[email email_verified],
-          address: %i[address],
-          phone: %i[phone_number phone_number_verified],
-        }.freeze
-
-        def initialize(options = {})
-          @name = options[:name].to_sym
-          @response = Array.wrap(options[:response])
-          @scope = options[:scope].to_sym if options[:scope]
-
-          # use default scope for Standard Claims
-          @scope ||= STANDARD_CLAIMS.find do |_scope, claims|
-            claims.include? @name
-          end.try(:first)
-
-          # use profile scope as default fallback
-          @scope ||= :profile
-        end
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/distributed_claim.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/distributed_claim.rb
deleted file mode 100644
index 3a0d4f874d54e..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/distributed_claim.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module Claims
-      class DistributedClaim < Claim
-        attr_accessor :endpoint, :access_token
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/normal_claim.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/normal_claim.rb
deleted file mode 100644
index 16b0126655182..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims/normal_claim.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module Claims
-      class NormalClaim < Claim
-        attr_reader :generator
-
-        def initialize(options = {})
-          super(options)
-          @generator = options[:generator]
-        end
-
-        def type
-          :normal
-        end
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims_builder.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims_builder.rb
deleted file mode 100644
index 69df8aaaae02e..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/claims_builder.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-# frozen_string_literal: true
-
-require 'ostruct'
-
-module Doorkeeper
-  module OpenidConnect
-    class ClaimsBuilder
-      def self.generate(access_token, response)
-        resource_owner = Doorkeeper::OpenidConnect.configuration.resource_owner_from_access_token.call(access_token)
-
-        Doorkeeper::OpenidConnect.configuration.claims.to_h.map do |name, claim|
-          if access_token.scopes.exists?(claim.scope) && claim.response.include?(response)
-            [name, claim.generator.call(resource_owner, access_token.scopes, access_token)]
-          end
-        end.compact.to_h
-      end
-
-      def initialize(&block)
-        @claims = OpenStruct.new
-        instance_eval(&block)
-      end
-
-      def build
-        @claims
-      end
-
-      def normal_claim(name, response: [:user_info], scope: nil, &block)
-        @claims[name] =
-          Claims::NormalClaim.new(
-            name: name,
-            response: response,
-            scope: scope,
-            generator: block
-          )
-      end
-      alias claim normal_claim
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/config.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/config.rb
deleted file mode 100644
index 6ebce486d238f..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/config.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    def self.configure(&block)
-      if Doorkeeper.configuration.orm != :active_record
-        raise Errors::InvalidConfiguration, 'Doorkeeper OpenID Connect currently only supports the ActiveRecord ORM adapter'
-      end
-
-      @config = Config::Builder.new(&block).build
-    end
-
-    def self.configuration
-      @config || (raise Errors::MissingConfiguration)
-    end
-
-    class Config
-      class Builder
-        def initialize(&block)
-          @config = Config.new
-          instance_eval(&block)
-        end
-
-        def build
-          @config
-        end
-
-        def jws_public_key(*_args)
-          puts 'DEPRECATION WARNING: `jws_public_key` is not needed anymore and will be removed in a future version, please remove it from config/initializers/doorkeeper_openid_connect.rb'
-        end
-
-        def jws_private_key(*args)
-          puts 'DEPRECATION WARNING: `jws_private_key` has been replaced by `signing_key` and will be removed in a future version, please remove it from config/initializers/doorkeeper_openid_connect.rb'
-          signing_key(*args)
-        end
-      end
-
-      mattr_reader(:builder_class) { Config::Builder }
-
-      extend ::Doorkeeper::Config::Option
-
-      option :issuer
-      option :signing_key
-      option :signing_algorithm, default: :rs256
-      option :subject_types_supported, default: [:public]
-
-      option :resource_owner_from_access_token, default: lambda { |*_|
-        raise Errors::InvalidConfiguration, I18n.translate('doorkeeper.openid_connect.errors.messages.resource_owner_from_access_token_not_configured')
-      }
-
-      option :auth_time_from_resource_owner, default: lambda { |*_|
-        raise Errors::InvalidConfiguration, I18n.translate('doorkeeper.openid_connect.errors.messages.auth_time_from_resource_owner_not_configured')
-      }
-
-      option :reauthenticate_resource_owner, default: lambda { |*_|
-        raise Errors::InvalidConfiguration, I18n.translate('doorkeeper.openid_connect.errors.messages.reauthenticate_resource_owner_not_configured')
-      }
-
-      option :select_account_for_resource_owner, default: lambda { |*_|
-        raise Errors::InvalidConfiguration, I18n.translate('doorkeeper.openid_connect.errors.messages.select_account_for_resource_owner_not_configured')
-      }
-
-      option :subject, default: lambda { |*_|
-        raise Errors::InvalidConfiguration, I18n.translate('doorkeeper.openid_connect.errors.messages.subject_not_configured')
-      }
-
-      option :expiration, default: 120
-
-      option :claims, builder_class: ClaimsBuilder
-
-      option :protocol, default: lambda { |*_|
-        ::Rails.env.production? ? :https : :http
-      }
-
-      option :end_session_endpoint, default: lambda { |*_|
-        nil
-      }
-
-      option :discovery_url_options, default: lambda { |*_|
-        {}
-      }
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/engine.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/engine.rb
deleted file mode 100644
index 6eb5e3ea0965c..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/engine.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    class Engine < ::Rails::Engine
-      initializer 'doorkeeper.openid_connect.routes' do
-        Doorkeeper::OpenidConnect::Rails::Routes.install!
-      end
-
-      config.to_prepare do
-        Doorkeeper::AuthorizationsController.prepend Doorkeeper::OpenidConnect::AuthorizationsExtension
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/errors.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/errors.rb
deleted file mode 100644
index ca7823b24a02a..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/errors.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module Errors
-      class OpenidConnectError < StandardError
-        def type
-          self.class.name.demodulize.underscore.to_sym
-        end
-      end
-
-      # internal errors
-      class InvalidConfiguration < OpenidConnectError; end
-      class MissingConfiguration < OpenidConnectError
-        def initialize
-          super('Configuration for Doorkeeper OpenID Connect missing. Do you have doorkeeper_openid_connect initializer?')
-        end
-      end
-
-      # OAuth 2.0 errors
-      # https://tools.ietf.org/html/rfc6749#section-4.1.2.1
-      class InvalidRequest < OpenidConnectError; end
-
-      # OpenID Connect 1.0 errors
-      # http://openid.net/specs/openid-connect-core-1_0.html#AuthError
-      class LoginRequired < OpenidConnectError; end
-      class ConsentRequired < OpenidConnectError; end
-      class InteractionRequired < OpenidConnectError; end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/helpers/controller.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/helpers/controller.rb
deleted file mode 100644
index d3e8396120a04..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/helpers/controller.rb
+++ /dev/null
@@ -1,141 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module Helpers
-      module Controller
-        private
-
-        # FIXME: remove after Doorkeeper will merge it
-        def current_resource_owner
-          return @current_resource_owner if defined?(@current_resource_owner)
-
-          super
-        end
-
-        def authenticate_resource_owner!
-          super.tap do |owner|
-            next unless oidc_authorization_request?
-
-            handle_oidc_prompt_param!(owner)
-            handle_oidc_max_age_param!(owner)
-          end
-        rescue Errors::OpenidConnectError => e
-          handle_oidc_error!(e)
-        end
-
-        def oidc_authorization_request?
-          controller_path == Doorkeeper::Rails::Routes.mapping[:authorizations][:controllers] &&
-            action_name == 'new' &&
-            pre_auth.valid? &&
-            pre_auth.scopes.include?('openid')
-        end
-
-        def handle_oidc_error!(exception)
-          # clear the previous response body to avoid a DoubleRenderError
-          self.response_body = nil
-
-          # FIXME: workaround for Rails 5, see https://github.com/rails/rails/issues/25106
-          @_response_body = nil
-
-          error_response = if exception.type == :invalid_request
-                             ::Doorkeeper::OAuth::InvalidRequestResponse.new(
-                               name: exception.type,
-                               state: params[:state],
-                               redirect_uri: params[:redirect_uri],
-                               response_on_fragment: pre_auth.response_on_fragment?,
-                             )
-                           else
-                             ::Doorkeeper::OAuth::ErrorResponse.new(
-                               name: exception.type,
-                               state: params[:state],
-                               redirect_uri: params[:redirect_uri],
-                               response_on_fragment: pre_auth.response_on_fragment?,
-                             )
-                           end
-
-          response.headers.merge!(error_response.headers)
-
-          # NOTE: Assign error_response to @authorize_response then use redirect_or_render method that are defined at
-          #   doorkeeper's authorizations_controller.
-          # - https://github.com/doorkeeper-gem/doorkeeper/blob/v5.5.0/app/controllers/doorkeeper/authorizations_controller.rb#L110
-          # - https://github.com/doorkeeper-gem/doorkeeper/blob/v5.5.0/app/controllers/doorkeeper/authorizations_controller.rb#L52
-          @authorize_response = error_response
-          redirect_or_render(@authorize_response)
-        end
-
-        def handle_oidc_prompt_param!(owner)
-          prompt_values ||= params[:prompt].to_s.split(/ +/).uniq
-
-          prompt_values.each do |prompt|
-            case prompt
-            when 'none'
-              raise Errors::InvalidRequest if (prompt_values - ['none']).any?
-              raise Errors::LoginRequired unless owner
-              raise Errors::ConsentRequired if oidc_consent_required?
-            when 'login'
-              reauthenticate_oidc_resource_owner(owner) if owner
-            when 'consent'
-              render :new if owner
-            when 'select_account'
-              select_account_for_oidc_resource_owner(owner)
-            else
-              raise Errors::InvalidRequest
-            end
-          end
-        end
-
-        def handle_oidc_max_age_param!(owner)
-          max_age = params[:max_age].to_i
-          return unless max_age > 0 && owner
-
-          auth_time = instance_exec(
-            owner,
-            &Doorkeeper::OpenidConnect.configuration.auth_time_from_resource_owner
-          )
-
-          if !auth_time || (Time.zone.now - auth_time) > max_age
-            reauthenticate_oidc_resource_owner(owner)
-          end
-        end
-
-        def return_without_oidc_prompt_param(prompt_value)
-          return_to = URI.parse(request.path)
-          return_to.query = request.query_parameters.tap do |params|
-            params['prompt'] = params['prompt'].to_s.sub(/\b#{prompt_value}\s*\b/, '').strip
-            params.delete('prompt') if params['prompt'].blank?
-          end.to_query
-          return_to.to_s
-        end
-
-        def reauthenticate_oidc_resource_owner(owner)
-          return_to = return_without_oidc_prompt_param('login')
-
-          instance_exec(
-            owner,
-            return_to,
-            &Doorkeeper::OpenidConnect.configuration.reauthenticate_resource_owner
-          )
-
-          raise Errors::LoginRequired unless performed?
-        end
-
-        def oidc_consent_required?
-          !skip_authorization? && !matching_token?
-        end
-
-        def select_account_for_oidc_resource_owner(owner)
-          return_to = return_without_oidc_prompt_param('select_account')
-
-          instance_exec(
-            owner,
-            return_to,
-            &Doorkeeper::OpenidConnect.configuration.select_account_for_resource_owner
-          )
-        end
-      end
-    end
-  end
-
-  Helpers::Controller.prepend OpenidConnect::Helpers::Controller
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/id_token.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/id_token.rb
deleted file mode 100644
index 69dfb0c92bb55..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/id_token.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    class IdToken
-      include ActiveModel::Validations
-
-      attr_reader :nonce
-
-      def initialize(access_token, nonce = nil)
-        @access_token = access_token
-        @nonce = nonce
-        @resource_owner = Doorkeeper::OpenidConnect.configuration.resource_owner_from_access_token.call(access_token)
-        @issued_at = Time.zone.now
-      end
-
-      def claims
-        {
-          iss: issuer,
-          sub: subject,
-          aud: audience,
-          exp: expiration,
-          iat: issued_at,
-          nonce: nonce,
-          auth_time: auth_time
-        }.merge ClaimsBuilder.generate(@access_token, :id_token)
-      end
-
-      def as_json(*_)
-        claims.reject { |_, value| value.nil? || value == '' }
-      end
-
-      def as_jws_token
-        ::JWT.encode(as_json,
-          Doorkeeper::OpenidConnect.signing_key.keypair,
-          Doorkeeper::OpenidConnect.signing_algorithm.to_s,
-          { typ: 'JWT', kid: Doorkeeper::OpenidConnect.signing_key.kid }
-        ).to_s
-      end
-
-      private
-
-      def issuer
-        if Doorkeeper::OpenidConnect.configuration.issuer.respond_to?(:call)
-          Doorkeeper::OpenidConnect.configuration.issuer.call(@resource_owner, @access_token.application).to_s
-        else
-          Doorkeeper::OpenidConnect.configuration.issuer
-        end
-      end
-
-      def subject
-        Doorkeeper::OpenidConnect.configuration.subject.call(@resource_owner, @access_token.application).to_s
-      end
-
-      def audience
-        @access_token.application.try(:uid)
-      end
-
-      def expiration
-        (@issued_at.utc + Doorkeeper::OpenidConnect.configuration.expiration).to_i
-      end
-
-      def issued_at
-        @issued_at.utc.to_i
-      end
-
-      def auth_time
-        Doorkeeper::OpenidConnect.configuration.auth_time_from_resource_owner.call(@resource_owner).try(:to_i)
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/id_token_token.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/id_token_token.rb
deleted file mode 100644
index 6e78fea88cd29..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/id_token_token.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    class IdTokenToken < IdToken
-      def claims
-        super.merge(at_hash: at_hash)
-      end
-
-      private
-
-      # The at_hash is build according to the following standard:
-      #
-      # http://openid.net/specs/openid-connect-implicit-1_0.html#IDToken
-      #
-      # at_hash:
-      #   REQUIRED. Access Token hash value. If the ID Token is issued with an
-      #   access_token in an Implicit Flow, this is REQUIRED, which is the case
-      #   for this subset of OpenID Connect. Its value is the base64url encoding
-      #   of the left-most half of the hash of the octets of the ASCII
-      #   representation of the access_token value, where the hash algorithm
-      #   used is the hash algorithm used in the alg Header Parameter of the
-      #   ID Token's JOSE Header. For instance, if the alg is RS256, hash the
-      #   access_token value with SHA-256, then take the left-most 128 bits and
-      #   base64url-encode them. The at_hash value is a case-sensitive string.
-      def at_hash
-        sha256 = Digest::SHA256.new
-        token = @access_token.token
-        hashed_token = sha256.digest(token)
-        first_half = hashed_token[0...hashed_token.length / 2]
-        Base64.urlsafe_encode64(first_half).tr('=', '')
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/authorization/code.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/authorization/code.rb
deleted file mode 100644
index f04bb0412ac90..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/authorization/code.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module OAuth
-      module Authorization
-        module Code
-          if Doorkeeper::OAuth::Authorization::Code.method_defined?(:issue_token!)
-            def issue_token!
-              super.tap do |access_grant|
-                create_openid_request(access_grant) if pre_auth.nonce.present?
-              end
-            end
-
-            alias issue_token issue_token!
-          else
-            # FIXME: drop this after dropping support of Doorkeeper < 5.4
-            def issue_token
-              super.tap do |access_grant|
-                create_openid_request(access_grant) if pre_auth.nonce.present?
-              end
-            end
-          end
-
-          private
-
-          def create_openid_request(access_grant)
-            ::Doorkeeper::OpenidConnect::Request.create!(
-              access_grant: access_grant,
-              nonce: pre_auth.nonce
-            )
-          end
-        end
-      end
-    end
-  end
-
-  OAuth::Authorization::Code.prepend OpenidConnect::OAuth::Authorization::Code
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/authorization_code_request.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/authorization_code_request.rb
deleted file mode 100644
index 1044d66385071..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/authorization_code_request.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module OAuth
-      module AuthorizationCodeRequest
-        private
-
-        def after_successful_response
-          super
-
-          nonce =
-            if (openid_request = grant.openid_request)
-              openid_request.destroy!
-              openid_request.nonce
-            end
-
-          id_token = Doorkeeper::OpenidConnect::IdToken.new(access_token, nonce)
-          @response.id_token = id_token
-        end
-      end
-    end
-  end
-
-  OAuth::AuthorizationCodeRequest.prepend OpenidConnect::OAuth::AuthorizationCodeRequest
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/password_access_token_request.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/password_access_token_request.rb
deleted file mode 100644
index 9e00f639ad89e..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/password_access_token_request.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module OAuth
-      module PasswordAccessTokenRequest
-        attr_reader :nonce
-
-        if Gem.loaded_specs['doorkeeper'].version >= Gem::Version.create('5.5.1')
-          def initialize(server, client, credentials, resource_owner, parameters = {})
-            super
-            @nonce = parameters[:nonce]
-          end
-        else
-          def initialize(server, client, resource_owner, parameters = {})
-            super
-            @nonce = parameters[:nonce]
-          end
-        end
-
-        private
-
-        def after_successful_response
-          id_token = Doorkeeper::OpenidConnect::IdToken.new(access_token, nonce)
-          @response.id_token = id_token
-          super
-        end
-      end
-    end
-  end
-
-  OAuth::PasswordAccessTokenRequest.prepend OpenidConnect::OAuth::PasswordAccessTokenRequest
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/pre_authorization.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/pre_authorization.rb
deleted file mode 100644
index 231f065a26836..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/pre_authorization.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module OAuth
-      module PreAuthorization
-        attr_reader :nonce
-
-        def initialize(server, attrs = {}, resource_owner = nil)
-          super
-          @nonce = attrs[:nonce]
-        end
-
-        # NOTE: Auto get default response_mode of specified response_type if response_mode is not
-        #   yet present. We can delete this method after Doorkeeper's minimize version support it.
-        def response_on_fragment?
-          return response_mode == 'fragment' if response_mode.present?
-
-          grant_flow = server.authorization_response_flows.detect do |flow|
-            flow.matches_response_type?(response_type)
-          end
-
-          grant_flow&.default_response_mode == 'fragment'
-        end
-      end
-    end
-  end
-
-  OAuth::PreAuthorization.prepend OpenidConnect::OAuth::PreAuthorization
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/token_response.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/token_response.rb
deleted file mode 100644
index 9aa3c4139619d..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/oauth/token_response.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module OAuth
-      module TokenResponse
-        attr_accessor :id_token
-
-        def body
-          if token.includes_scope? 'openid'
-            id_token = self.id_token || Doorkeeper::OpenidConnect::IdToken.new(token)
-
-            super
-              .merge(id_token: id_token.as_jws_token)
-              .reject { |_, value| value.blank? }
-          else
-            super
-          end
-        end
-      end
-    end
-  end
-
-  OAuth::TokenResponse.prepend OpenidConnect::OAuth::TokenResponse
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/orm/active_record.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/orm/active_record.rb
deleted file mode 100644
index e9005ab6ed946..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/orm/active_record.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-# frozen_string_literal: true
-
-require 'active_support/lazy_load_hooks'
-
-module Doorkeeper
-  module OpenidConnect
-    autoload :AccessGrant, "doorkeeper/openid_connect/orm/active_record/access_grant"
-    autoload :Request, "doorkeeper/openid_connect/orm/active_record/request"
-
-    module Orm
-      module ActiveRecord
-        def run_hooks
-          super
-
-          if Gem.loaded_specs['doorkeeper'].version >= Gem::Version.create('5.5.0')
-            Doorkeeper.config.access_grant_model.prepend Doorkeeper::OpenidConnect::AccessGrant
-          else
-            Doorkeeper::AccessGrant.prepend Doorkeeper::OpenidConnect::AccessGrant
-          end
-
-          if Doorkeeper.configuration.respond_to?(:active_record_options) && Doorkeeper.configuration.active_record_options[:establish_connection]
-            [Doorkeeper::OpenidConnect::Request].each do |c|
-              c.send :establish_connection, Doorkeeper.configuration.active_record_options[:establish_connection]
-            end
-          end
-        end
-
-        def initialize_models!
-          super
-          ActiveSupport.on_load(:active_record) do
-            require 'doorkeeper/openid_connect/orm/active_record/access_grant'
-            require 'doorkeeper/openid_connect/orm/active_record/request'
-
-            if Gem.loaded_specs['doorkeeper'].version >= Gem::Version.create('5.5.0')
-              Doorkeeper.config.access_grant_model.prepend Doorkeeper::OpenidConnect::AccessGrant
-            else
-              Doorkeeper::AccessGrant.prepend Doorkeeper::OpenidConnect::AccessGrant
-            end
-
-            if Doorkeeper.configuration.active_record_options[:establish_connection]
-              [Doorkeeper::OpenidConnect::Request].each do |c|
-                c.send :establish_connection, Doorkeeper.configuration.active_record_options[:establish_connection]
-              end
-            end
-          end
-        end
-      end
-    end
-  end
-
-  Orm::ActiveRecord.singleton_class.send :prepend, OpenidConnect::Orm::ActiveRecord
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/orm/active_record/access_grant.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/orm/active_record/access_grant.rb
deleted file mode 100644
index 3e51f45e63dd5..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/orm/active_record/access_grant.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module AccessGrant
-      def self.prepended(base)
-        base.class_eval do
-          has_one :openid_request,
-            class_name: 'Doorkeeper::OpenidConnect::Request',
-            foreign_key: 'access_grant_id',
-            inverse_of: :access_grant,
-            dependent: :delete
-        end
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/orm/active_record/request.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/orm/active_record/request.rb
deleted file mode 100644
index 009ba7bd752d7..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/orm/active_record/request.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    class Request < ::ActiveRecord::Base
-      self.table_name = "#{table_name_prefix}oauth_openid_requests#{table_name_suffix}".to_sym
-
-      validates :access_grant_id, :nonce, presence: true
-
-      if Gem.loaded_specs['doorkeeper'].version >= Gem::Version.create('5.5.0')
-        belongs_to :access_grant,
-                   class_name: Doorkeeper.config.access_grant_class.to_s,
-                   inverse_of: :openid_request
-      else
-        belongs_to :access_grant,
-                   class_name: 'Doorkeeper::AccessGrant',
-                   inverse_of: :openid_request
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/rails/routes.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/rails/routes.rb
deleted file mode 100644
index 2a44c27f6164a..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/rails/routes.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-# frozen_string_literal: true
-
-require 'doorkeeper/openid_connect/rails/routes/mapping'
-require 'doorkeeper/openid_connect/rails/routes/mapper'
-
-module Doorkeeper
-  module OpenidConnect
-    module Rails
-      class Routes
-        module Helper
-          def use_doorkeeper_openid_connect(options = {}, &block)
-            Doorkeeper::OpenidConnect::Rails::Routes.new(self, &block).generate_routes!(options)
-          end
-        end
-
-        def self.install!
-          ActionDispatch::Routing::Mapper.include Doorkeeper::OpenidConnect::Rails::Routes::Helper
-        end
-
-        attr_accessor :routes
-
-        def initialize(routes, &block)
-          @routes = routes
-          @block = block
-        end
-
-        def generate_routes!(options)
-          @mapping = Mapper.new.map(&@block)
-          routes.scope options[:scope] || 'oauth', as: 'oauth' do
-            map_route(:userinfo, :userinfo_routes)
-            map_route(:discovery, :discovery_routes)
-          end
-
-          routes.scope as: 'oauth' do
-            map_route(:discovery, :discovery_well_known_routes)
-          end
-        end
-
-        private
-
-        def map_route(name, method)
-          return if @mapping.skipped?(name)
-
-          mapping = @mapping[name]
-
-          routes.scope controller: mapping[:controllers], as: mapping[:as] do
-            send method
-          end
-        end
-
-        def userinfo_routes
-          routes.get :show, path: 'userinfo', as: ''
-          routes.post :show, path: 'userinfo', as: nil
-        end
-
-        def discovery_routes
-          routes.scope path: 'discovery' do
-            routes.get :keys
-          end
-        end
-
-        def discovery_well_known_routes
-          routes.scope path: '.well-known' do
-            routes.get :provider, path: 'openid-configuration'
-            routes.get :provider, path: 'oauth-authorization-server'
-            routes.get :webfinger
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/rails/routes/mapper.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/rails/routes/mapper.rb
deleted file mode 100644
index 1931edcc7f0f4..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/rails/routes/mapper.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module Rails
-      class Routes
-        class Mapper
-          def initialize(mapping = Mapping.new)
-            @mapping = mapping
-          end
-
-          def map(&block)
-            instance_eval(&block) if block
-            @mapping
-          end
-
-          def controllers(controller_names = {})
-            @mapping.controllers.merge!(controller_names)
-          end
-
-          def skip_controllers(*controller_names)
-            @mapping.skips = controller_names
-          end
-
-          def as(alias_names = {})
-            @mapping.as.merge!(alias_names)
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/rails/routes/mapping.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/rails/routes/mapping.rb
deleted file mode 100644
index 307f4045017dc..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/rails/routes/mapping.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    module Rails
-      class Routes
-        class Mapping
-          attr_accessor :controllers, :as, :skips
-
-          def initialize
-            @controllers = {
-              userinfo: 'doorkeeper/openid_connect/userinfo',
-              discovery: 'doorkeeper/openid_connect/discovery'
-            }
-
-            @as = {
-              userinfo: :userinfo,
-              discovery: :discovery
-            }
-
-            @skips = []
-          end
-
-          def [](routes)
-            {
-              controllers: @controllers[routes],
-              as: @as[routes]
-            }
-          end
-
-          def skipped?(controller)
-            @skips.include?(controller)
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/user_info.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/user_info.rb
deleted file mode 100644
index 9b82334c111ec..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/user_info.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    class UserInfo
-      include ActiveModel::Validations
-
-      def initialize(access_token)
-        @access_token = access_token
-      end
-
-      def claims
-        {
-          sub: subject
-        }.merge ClaimsBuilder.generate(@access_token, :user_info)
-      end
-
-      def as_json(*_)
-        claims.reject { |_, value| value.nil? || value == '' }
-      end
-
-      private
-
-      def subject
-        Doorkeeper::OpenidConnect.configuration.subject.call(resource_owner, application).to_s
-      end
-
-      def resource_owner
-        @resource_owner ||= Doorkeeper::OpenidConnect.configuration.resource_owner_from_access_token.call(@access_token)
-      end
-
-      def application
-        @application ||= @access_token.application
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/version.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/version.rb
deleted file mode 100644
index 4a17095e367f5..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/openid_connect/version.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    VERSION = '1.8.9'
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/request/id_token.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/request/id_token.rb
deleted file mode 100644
index 1c6967001ac25..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/request/id_token.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-# frozen_string_literal: true
-
-require 'doorkeeper/request/strategy'
-
-module Doorkeeper
-  module Request
-    class IdToken < Strategy
-      delegate :current_resource_owner, to: :server
-
-      def pre_auth
-        server.context.send(:pre_auth)
-      end
-
-      def request
-        @request ||= OAuth::IdTokenRequest.new(pre_auth, current_resource_owner)
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/request/id_token_token.rb b/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/request/id_token_token.rb
deleted file mode 100644
index 100d6a18f1ed9..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/doorkeeper/request/id_token_token.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-# frozen_string_literal: true
-
-require 'doorkeeper/request/strategy'
-
-module Doorkeeper
-  module Request
-    class IdTokenToken < Strategy
-      delegate :current_resource_owner, to: :server
-
-      def pre_auth
-        server.context.send(:pre_auth)
-      end
-
-      def request
-        @request ||= OAuth::IdTokenTokenRequest.new(pre_auth, current_resource_owner)
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/install_generator.rb b/vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/install_generator.rb
deleted file mode 100644
index 8d3a46693328f..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/install_generator.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-# frozen_string_literal: true
-
-module Doorkeeper
-  module OpenidConnect
-    class InstallGenerator < ::Rails::Generators::Base
-      include ::Rails::Generators::Migration
-      source_root File.expand_path('templates', __dir__)
-      desc 'Installs Doorkeeper OpenID Connect.'
-
-      def install
-        template 'initializer.rb', 'config/initializers/doorkeeper_openid_connect.rb'
-        copy_file File.expand_path('../../../../config/locales/en.yml', __dir__), 'config/locales/doorkeeper_openid_connect.en.yml'
-        route 'use_doorkeeper_openid_connect'
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/migration_generator.rb b/vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/migration_generator.rb
deleted file mode 100644
index 50fecec6189dd..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/migration_generator.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails/generators/active_record'
-
-module Doorkeeper
-  module OpenidConnect
-    class MigrationGenerator < ::Rails::Generators::Base
-      include ::Rails::Generators::Migration
-      source_root File.expand_path('templates', __dir__)
-      desc 'Installs Doorkeeper OpenID Connect migration file.'
-
-      def install
-        migration_template(
-          'migration.rb.erb',
-          'db/migrate/create_doorkeeper_openid_connect_tables.rb',
-          migration_version: migration_version
-        )
-      end
-
-      def self.next_migration_number(dirname)
-        ActiveRecord::Generators::Base.next_migration_number(dirname)
-      end
-
-      private
-
-      def migration_version
-        if ActiveRecord::VERSION::MAJOR >= 5
-          "[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
-        end
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/templates/initializer.rb b/vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/templates/initializer.rb
deleted file mode 100644
index 4c322760115ab..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/templates/initializer.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-# frozen_string_literal: true
-
-Doorkeeper::OpenidConnect.configure do
-  issuer do |resource_owner, application|
-    'issuer string'
-  end
-
-  signing_key <<~KEY
-    -----BEGIN RSA PRIVATE KEY-----
-    ....
-    -----END RSA PRIVATE KEY-----
-  KEY
-
-  subject_types_supported [:public]
-
-  resource_owner_from_access_token do |access_token|
-    # Example implementation:
-    # User.find_by(id: access_token.resource_owner_id)
-  end
-
-  auth_time_from_resource_owner do |resource_owner|
-    # Example implementation:
-    # resource_owner.current_sign_in_at
-  end
-
-  reauthenticate_resource_owner do |resource_owner, return_to|
-    # Example implementation:
-    # store_location_for resource_owner, return_to
-    # sign_out resource_owner
-    # redirect_to new_user_session_url
-  end
-
-  # Depending on your configuration, a DoubleRenderError could be raised
-  # if render/redirect_to is called at some point before this callback is executed.
-  # To avoid the DoubleRenderError, you could add these two lines at the beginning
-  #  of this callback: (Reference: https://github.com/rails/rails/issues/25106)
-  #   self.response_body = nil
-  #   @_response_body = nil
-  select_account_for_resource_owner do |resource_owner, return_to|
-    # Example implementation:
-    # store_location_for resource_owner, return_to
-    # redirect_to account_select_url
-  end
-
-  subject do |resource_owner, application|
-    # Example implementation:
-    # resource_owner.id
-
-    # or if you need pairwise subject identifier, implement like below:
-    # Digest::SHA256.hexdigest("#{resource_owner.id}#{URI.parse(application.redirect_uri).host}#{'your_secret_salt'}")
-  end
-
-  # Protocol to use when generating URIs for the discovery endpoint,
-  # for example if you also use HTTPS in development
-  # protocol do
-  #   :https
-  # end
-
-  # Expiration time on or after which the ID Token MUST NOT be accepted for processing. (default 120 seconds).
-  # expiration 600
-
-  # Example claims:
-  # claims do
-  #   normal_claim :_foo_ do |resource_owner|
-  #     resource_owner.foo
-  #   end
-
-  #   normal_claim :_bar_ do |resource_owner|
-  #     resource_owner.bar
-  #   end
-  # end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/templates/migration.rb.erb b/vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/templates/migration.rb.erb
deleted file mode 100644
index 05dac3eece504..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/lib/generators/doorkeeper/openid_connect/templates/migration.rb.erb
+++ /dev/null
@@ -1,15 +0,0 @@
-class CreateDoorkeeperOpenidConnectTables < ActiveRecord::Migration<%= migration_version %>
-  def change
-    create_table :oauth_openid_requests do |t|
-      t.references :access_grant, null: false, index: true
-      t.string :nonce, null: false
-    end
-
-    add_foreign_key(
-      :oauth_openid_requests,
-      :oauth_access_grants,
-      column: :access_grant_id,
-      on_delete: :cascade
-    )
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/controllers/discovery_controller_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/controllers/discovery_controller_spec.rb
deleted file mode 100644
index 68a0341275da3..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/controllers/discovery_controller_spec.rb
+++ /dev/null
@@ -1,316 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::DiscoveryController, type: :controller do
-  describe '#provider' do
-    it 'returns the provider configuration' do
-      get :provider
-      data = JSON.parse(response.body)
-
-      expect(data.sort).to match({
-        'issuer' => 'dummy',
-        'authorization_endpoint' => 'http://test.host/oauth/authorize',
-        'token_endpoint' => 'http://test.host/oauth/token',
-        'revocation_endpoint' => 'http://test.host/oauth/revoke',
-        'introspection_endpoint' => 'http://test.host/oauth/introspect',
-        'userinfo_endpoint' => 'http://test.host/oauth/userinfo',
-        'jwks_uri' => 'http://test.host/oauth/discovery/keys',
-
-        'scopes_supported' => ['openid'],
-        'response_types_supported' => ['code', 'token', 'id_token', 'id_token token'],
-        'response_modes_supported' => %w[query fragment form_post],
-        'grant_types_supported' => %w[authorization_code client_credentials implicit_oidc],
-
-        'token_endpoint_auth_methods_supported' => %w[client_secret_basic client_secret_post],
-
-        'subject_types_supported' => [
-          'public',
-        ],
-
-        'id_token_signing_alg_values_supported' => [
-          'RS256',
-        ],
-
-        'claim_types_supported' => [
-          'normal',
-        ],
-
-        'claims_supported' => %w[
-          iss
-          sub
-          aud
-          exp
-          iat
-          name
-          variable_name
-          created_at
-          updated_at
-          token_id
-          both_responses
-          id_token_response
-          user_info_response
-        ],
-
-        'code_challenge_methods_supported' => %w[
-          plain
-          S256
-        ],
-      }.sort)
-    end
-
-    context 'when refresh_token grant type is enabled' do
-      before { Doorkeeper.configure { use_refresh_token } }
-
-      it 'add refresh_token to grant_types_supported' do
-        get :provider
-        data = JSON.parse(response.body)
-
-        expect(data['grant_types_supported']).to eq %w[authorization_code client_credentials refresh_token]
-      end
-    end
-
-    context 'when issuer block' do
-      before { Doorkeeper::OpenidConnect.configure { issuer do |r, a| "test-issuer" end } }
-
-      it 'return blocks result' do
-        get :provider
-        data = JSON.parse(response.body)
-
-        expect(data['issuer']).to eq "test-issuer"
-      end
-    end
-
-    context 'when grant_flows is configed with only client_credentials' do
-      before { Doorkeeper.configure { grant_flows %w[client_credentials] } }
-
-      it 'return empty response_modes_supported' do
-        get :provider
-        data = JSON.parse(response.body)
-
-        expect(data['response_modes_supported']).to eq []
-      end
-    end
-
-    context 'when grant_flows is configed only implicit flow' do
-      before { Doorkeeper.configure { grant_flows %w[implicit_oidc] } }
-
-      it 'return fragment and form_post as response_modes_supported' do
-        get :provider
-        data = JSON.parse(response.body)
-
-        expect(data['response_modes_supported']).to eq %w[fragment form_post]
-      end
-    end
-
-    context 'when grant_flows is configed with authorization_code and implicit flow' do
-      before { Doorkeeper.configure { grant_flows %w[authorization_code implicit_oidc] } }
-
-      it 'return query, fragment and form_post as response_modes_supported' do
-        get :provider
-        data = JSON.parse(response.body)
-
-        expect(data['response_modes_supported']).to eq %w[query fragment form_post]
-      end
-    end
-
-    it 'uses the protocol option for generating URLs' do
-      Doorkeeper::OpenidConnect.configure do
-        protocol { :testing }
-      end
-
-      get :provider
-      data = JSON.parse(response.body)
-
-      expect(data['authorization_endpoint']).to eq 'testing://test.host/oauth/authorize'
-    end
-
-    context 'when the discovery_url_options option is set for all endpoints' do
-      before do
-        Doorkeeper::OpenidConnect.configure do
-          discovery_url_options do |request|
-            {
-              authorization: { host: 'alternate-authorization.host' },
-              token: { host: 'alternate-token.host' },
-              revocation: { host: 'alternate-revocation.host' },
-              introspection: { host: 'alternate-introspection.host' },
-              userinfo: { host: 'alternate-userinfo.host' },
-              jwks: { host: 'alternate-jwks.host' }
-            }
-          end
-        end
-      end
-
-      it 'uses the discovery_url_options option when generating the endpoint urls' do
-        get :provider
-        data = JSON.parse(response.body)
-
-        expect(data['authorization_endpoint']).to eq 'http://alternate-authorization.host/oauth/authorize'
-        expect(data['token_endpoint']).to eq 'http://alternate-token.host/oauth/token'
-        expect(data['revocation_endpoint']).to eq 'http://alternate-revocation.host/oauth/revoke'
-        expect(data['introspection_endpoint']).to eq 'http://alternate-introspection.host/oauth/introspect'
-        expect(data['userinfo_endpoint']).to eq 'http://alternate-userinfo.host/oauth/userinfo'
-        expect(data['jwks_uri']).to eq 'http://alternate-jwks.host/oauth/discovery/keys'
-      end
-    end
-
-    context 'when the discovery_url_options option is only set for some endpoints' do
-      before do
-        Doorkeeper::OpenidConnect.configure do
-          discovery_url_options do |request|
-            { authorization: { host: 'alternate-authorization.host' } }
-          end
-        end
-      end
-
-      it 'does not use the discovery_url_options option when generating other URLs' do
-        get :provider
-        data = JSON.parse(response.body)
-
-        {
-          'token_endpoint' => 'http://test.host/oauth/token',
-          'revocation_endpoint' => 'http://test.host/oauth/revoke',
-          'introspection_endpoint' => 'http://test.host/oauth/introspect',
-          'userinfo_endpoint' => 'http://test.host/oauth/userinfo',
-          'jwks_uri' => 'http://test.host/oauth/discovery/keys',
-        }.each do |endpoint, expected_url|
-          expect(data[endpoint]).to eq expected_url
-        end
-      end
-    end
-
-    it 'does not return an end session endpoint if none is configured' do
-      get :provider
-      data = JSON.parse(response.body)
-
-      expect(data.key?('end_session_endpoint')).to be(false)
-    end
-
-    it 'uses the configured end session endpoint with self as context' do
-      Doorkeeper::OpenidConnect.configure do
-        end_session_endpoint -> { logout_url }
-      end
-
-      def controller.logout_url
-        'http://test.host/logout'
-      end
-
-      get :provider
-      data = JSON.parse(response.body)
-
-      expect(data['end_session_endpoint']).to eq 'http://test.host/logout'
-    end
-
-    context 'when token inspection is disallowed' do
-      let(:doorkeeper_config) { Doorkeeper.config }
-      let!(:allow_token_introspection) { doorkeeper_config.allow_token_introspection }
-
-      before do
-        allow(doorkeeper_config).to receive(:allow_token_introspection).and_return(false)
-        Rails.application.reload_routes!
-      end
-
-      after do
-        allow(doorkeeper_config).to receive(:allow_token_introspection).and_return(allow_token_introspection)
-        Rails.application.reload_routes!
-      end
-
-      it 'does not return introspection_endpoint' do
-        get :provider
-        data = JSON.parse(response.body)
-
-        expect(data.key?('introspection_endpoint')).to be(false)
-      end
-    end
-  end
-
-  describe '#webfinger' do
-    it 'requires the resource parameter' do
-      expect do
-        get :webfinger
-      end.to raise_error ActionController::ParameterMissing
-    end
-
-    it 'returns the OpenID Connect relation' do
-      get :webfinger, params: { resource: 'user@example.com' }
-      data = JSON.parse(response.body)
-
-      expect(data.sort).to eq({
-        'subject' => 'user@example.com',
-        'links' => [
-          'rel' => 'http://openid.net/specs/connect/1.0/issuer',
-          'href' => 'http://test.host/',
-        ],
-      }.sort)
-    end
-
-    context 'when the discovery_url_options option is set for webfinger endpoint' do
-      before do
-        Doorkeeper::OpenidConnect.configure do
-          discovery_url_options do |request|
-            { webfinger: { host: 'alternate-webfinger.host' } }
-          end
-        end
-      end
-
-      it 'uses the discovery_url_options option when generating the webfinger endpoint url' do
-        get :webfinger, params: { resource: 'user@example.com' }
-        data = JSON.parse(response.body)
-
-        expect(data['links'].first['href']).to eq 'http://alternate-webfinger.host/'
-      end
-    end
-
-    context 'when the discovery_url_options option uses the request for an endpoint' do
-      before do
-        Doorkeeper::OpenidConnect.configure do
-          discovery_url_options do |request|
-            {
-              authorization: { host: 'alternate-authorization.host',
-                               protocol: request.ssl? ? :https : :testing }
-            }
-          end
-        end
-      end
-
-      it 'uses the discovery_url_options option when generating the webfinger endpoint url' do
-        get :provider
-        data = JSON.parse(response.body)
-
-        expect(data['authorization_endpoint']).to eq 'testing://alternate-authorization.host/oauth/authorize'
-      end
-    end
-  end
-
-  describe '#keys' do
-    subject { get :keys }
-
-    shared_examples 'a key response' do |options|
-      expected_parameters = options[:expected_parameters]
-
-      it "includes only #{expected_parameters.join(', ')} parameters" do
-        subject
-        data = JSON.parse(response.body)
-        key = data['keys'].first
-
-        expect(key.keys.map(&:to_sym)).to match_array(expected_parameters)
-      end
-    end
-
-    context 'when using an RSA key' do
-      it_behaves_like 'a key response', expected_parameters: %i[kty kid e n use alg]
-    end
-
-    context 'when using an EC key' do
-      before { configure_ec }
-
-      it_behaves_like 'a key response', expected_parameters: %i[kty kid crv x y use alg]
-    end
-
-    context 'when using an HMAC key' do
-      before { configure_hmac }
-
-      it_behaves_like 'a key response', expected_parameters: %i[kty kid use alg]
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/controllers/doorkeeper/authorizations_controller_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/controllers/doorkeeper/authorizations_controller_spec.rb
deleted file mode 100644
index 7f1da7da590a9..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/controllers/doorkeeper/authorizations_controller_spec.rb
+++ /dev/null
@@ -1,433 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::AuthorizationsController, type: :controller do
-  let(:user) { create :user }
-  let(:application) { create :application, scopes: default_scopes }
-  let(:default_scopes) { 'openid profile' }
-  let(:token_attributes) { { application_id: application.id, resource_owner_id: user.id, scopes: default_scopes } }
-
-  def authorize!(params = {})
-    get :new, params: {
-      response_type: 'code',
-      response_mode: '',
-      current_user: user.id,
-      client_id: application.uid,
-      scope: default_scopes,
-      redirect_uri: application.redirect_uri,
-    }.merge(params)
-  end
-
-  def build_redirect_uri(params = {}, type: 'query')
-    case type
-    when 'query'
-      Doorkeeper::OAuth::Authorization::URIBuilder.uri_with_query(application.redirect_uri, params)
-    when 'fragment'
-      Doorkeeper::OAuth::Authorization::URIBuilder.uri_with_fragment(application.redirect_uri, params)
-    else
-      raise ArgumentError, "Unsupported uri type #{type}"
-    end
-  end
-
-  def expect_authorization_form!
-    expect(response).to be_successful
-    expect(response).to render_template('doorkeeper/authorizations/new')
-  end
-
-  def expect_successful_callback!
-    expect(response).to be_redirect
-    expect(response.location).to match(/^#{Regexp.quote application.redirect_uri}\?code=[-\w]+$/)
-  end
-
-  describe '#authenticate_resource_owner!' do
-    it 'redirects to login form when not logged in' do
-      authorize! current_user: nil
-
-      expect(response).to redirect_to '/login'
-    end
-
-    context 'with OIDC requests' do
-      before do
-        expect(controller).to receive(:handle_oidc_prompt_param!)
-        expect(controller).to receive(:handle_oidc_max_age_param!)
-      end
-
-      it 'renders the authorization form if logged in' do
-        authorize!
-
-        expect_authorization_form!
-      end
-    end
-
-    context 'with non-OIDC requests' do
-      before do
-        expect(controller).not_to receive(:handle_oidc_prompt_param!)
-        expect(controller).not_to receive(:handle_oidc_max_age_param!)
-      end
-
-      it 'when action is not :new' do
-        get :show, params: {
-          response_type: 'code',
-          current_user: user.id,
-          client_id: application.uid,
-          scope: default_scopes,
-          redirect_uri: application.redirect_uri,
-        }
-
-        expect(response).to render_template('doorkeeper/authorizations/show')
-      end
-
-      context 'when pre_authorization is invalid' do
-        it 'render error when client_id is missing' do
-          authorize!(client_id: nil)
-
-          expect(response).to be_successful
-          expect(response).to render_template('doorkeeper/authorizations/error')
-        end
-
-        it 'render error when response_type is missing' do
-          authorize!(response_type: nil)
-
-          expect(response).to be_successful
-          expect(response).to render_template('doorkeeper/authorizations/error')
-        end
-      end
-
-      it 'when openid scope is not present' do
-        authorize!(scope: 'profile')
-
-        expect_authorization_form!
-      end
-    end
-  end
-
-  describe '#handle_oidc_prompt_param!' do
-    it 'is ignored when the openid scope is not present' do
-      authorize! scope: 'profile', prompt: 'invalid'
-
-      expect_authorization_form!
-    end
-
-    context 'with a prompt=none parameter' do
-      context 'and a matching token' do
-        before do
-          create :access_token, token_attributes
-        end
-
-        it 'redirects to the callback if logged in' do
-          authorize! prompt: 'none'
-
-          expect_successful_callback!
-        end
-
-        context 'when another prompt value is present' do
-          let(:error_params) do
-            {
-              'error' => 'invalid_request',
-              'error_description' => 'The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.',
-            }
-          end
-          let(:request_param) { { prompt: 'none login' } }
-
-          it 'redirect as the query uri with an invalid_request error' do
-            authorize! request_param
-
-            expect(response).to redirect_to build_redirect_uri(error_params)
-          end
-
-          it 'redirect as the fragment style uri when response_type is implicit flow request' do
-            allow(Doorkeeper.configuration).to receive(:grant_flows).and_return(['implicit_oidc'])
-
-            authorize! request_param.merge(response_type: 'id_token token')
-
-            expect(response).to redirect_to build_redirect_uri(error_params, type: 'fragment')
-          end
-
-          it 'set @authorize_response variable and render form_post template and when the form_post response_mode is specified' do
-            allow(Doorkeeper.configuration).to receive(:grant_flows).and_return(['implicit_oidc'])
-
-            authorize! request_param.merge(response_type: 'id_token token', response_mode: 'form_post')
-
-            authorize_response = controller.instance_variable_get :@authorize_response
-            expect(authorize_response.body.to_json).to eq(error_params.to_json)
-            expect(response).to render_template(:form_post)
-          end
-        end
-
-        context 'when not logged in' do
-          let(:error_params) do
-            {
-              'error' => 'login_required',
-              'error_description' => 'The authorization server requires end-user authentication',
-              'state' => 'somestate',
-            }
-          end
-          let(:request_param) { { current_user: nil } }
-
-          it 'returns a login_required error' do
-            authorize! request_param.merge(prompt: 'none', state: 'somestate')
-
-            expect(response).to redirect_to build_redirect_uri(error_params)
-          end
-
-          it 'redirect as the fragment style uri when response_type is implicit flow request' do
-            allow(Doorkeeper.configuration).to receive(:grant_flows).and_return(['implicit_oidc'])
-
-            authorize! request_param.merge(response_type: 'id_token token', prompt: 'none', state: 'somestate')
-
-            expect(response).to redirect_to build_redirect_uri(error_params, type: 'fragment')
-          end
-
-          it 'set @authorize_response variable and render form_post template and when the form_post response_mode is specified' do
-            allow(Doorkeeper.configuration).to receive(:grant_flows).and_return(['implicit_oidc'])
-
-            authorize! request_param.merge(response_type: 'id_token token', response_mode: 'form_post', prompt: 'none', state: 'somestate')
-
-            authorize_response = controller.instance_variable_get :@authorize_response
-            expect(authorize_response.body.to_json).to eq(error_params.to_json)
-            expect(response).to render_template(:form_post)
-          end
-        end
-      end
-
-      context 'and no matching token' do
-        it 'redirects to the callback if skip_authorization is set to true' do
-          allow(controller).to receive(:skip_authorization?).and_return(true)
-
-          authorize! prompt: 'none'
-          expect_successful_callback!
-        end
-
-        context 'when not logged in' do
-          let(:error_params) do
-            {
-              'error' => 'login_required',
-              'error_description' => 'The authorization server requires end-user authentication',
-              'state' => 'somestate',
-            }
-          end
-          let(:request_param) { { current_user: nil } }
-
-          it 'returns the login_required error when not logged in' do
-            authorize! request_param.merge(prompt: 'none', state: 'somestate')
-
-            expect(response).to redirect_to build_redirect_uri(error_params)
-          end
-
-          it 'uses the fragment style uris when redirecting an error for implicit flow request' do
-            allow(Doorkeeper.configuration).to receive(:grant_flows).and_return(['implicit_oidc'])
-
-            authorize! request_param.merge(response_type: 'id_token token', prompt: 'none', state: 'somestate')
-
-            expect(response).to redirect_to build_redirect_uri(error_params, type: 'fragment')
-          end
-
-          it 'set @authorize_response variable and render form_post template and when the form_post response_mode is specified' do
-            allow(Doorkeeper.configuration).to receive(:grant_flows).and_return(['implicit_oidc'])
-
-            authorize! request_param.merge(response_type: 'id_token token', response_mode: 'form_post', prompt: 'none', state: 'somestate')
-
-            authorize_response = controller.instance_variable_get :@authorize_response
-            expect(authorize_response.body.to_json).to eq(error_params.to_json)
-            expect(response).to render_template(:form_post)
-          end
-        end
-
-        it 'returns a consent_required error when logged in' do
-          authorize! prompt: 'none'
-
-          error_params = {
-            'error' => 'consent_required',
-            'error_description' => 'The authorization server requires end-user consent',
-          }
-
-          expect(response).to redirect_to build_redirect_uri(error_params)
-        end
-      end
-    end
-
-    context 'with a prompt=login parameter' do
-      it 'redirects to the sign in form if not logged in' do
-        authorize! prompt: 'login', current_user: nil
-
-        expect(response).to redirect_to('/login')
-      end
-
-      it 'reauthenticates the user if logged in' do
-        authorize! prompt: 'login'
-
-        expect(response).to redirect_to('/reauthenticate')
-      end
-    end
-
-    context 'with a prompt=consent parameter' do
-      it 'redirects to the sign in form if not logged in' do
-        authorize! prompt: 'consent', current_user: nil
-
-        expect(response).to redirect_to('/login')
-      end
-
-      it 'renders the authorization form even if a matching token is present' do
-        create :access_token, token_attributes
-        authorize! prompt: 'consent'
-
-        expect_authorization_form!
-      end
-    end
-
-    context 'with a prompt=select_account parameter' do
-      it 'redirects to the select account screen' do
-        authorize! prompt: 'select_account'
-
-        expect(response).to redirect_to('/select_account')
-      end
-    end
-
-    context 'with an unknown prompt parameter' do
-      it 'returns an invalid_request error' do
-        authorize! prompt: 'maybe'
-
-        error_params = {
-          'error' => 'invalid_request',
-          'error_description' => 'The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.',
-        }
-
-        expect(response).to redirect_to build_redirect_uri(error_params)
-      end
-
-      it 'does not redirect to an invalid redirect_uri' do
-        authorize! prompt: 'maybe', redirect_uri: 'https://evilapp.com'
-
-        expect(response).not_to be_redirect
-      end
-    end
-  end
-
-  describe '#handle_oidc_max_age_param!' do
-    context 'with an invalid max_age parameter' do
-      it 'renders the authorization form' do
-        %w[0 -1 -23 foobar].each do |max_age|
-          authorize! max_age: max_age
-
-          expect_authorization_form!
-        end
-      end
-    end
-
-    context 'with a max_age=10 parameter' do
-      it 'renders the authorization form if the users last login was within 10 seconds' do
-        user.update! current_sign_in_at: 5.seconds.ago
-        authorize! max_age: 10
-
-        expect_authorization_form!
-      end
-
-      it 'reauthenticates the user if the last login was longer than 10 seconds ago' do
-        user.update! current_sign_in_at: 5.minutes.ago
-        authorize! max_age: 10
-
-        expect(response).to redirect_to '/reauthenticate'
-      end
-
-      it 'reauthenticates the user if the last login is unknown' do
-        user.update! current_sign_in_at: nil
-        authorize! max_age: 10
-
-        expect(response).to redirect_to '/reauthenticate'
-      end
-    end
-  end
-
-  describe '#reauthenticate_oidc_resource_owner' do
-    let(:performed) { true }
-
-    before do
-      allow(subject).to receive(:performed?) { performed }
-      allow(subject.request).to receive(:path).and_return('/oauth/authorize')
-      allow(subject.request).to receive(:query_parameters) {
-        { client_id: 'foo', prompt: 'login consent select_account' }.with_indifferent_access
-      }
-    end
-
-    def reauthenticate!
-      passed_args = nil
-
-      Doorkeeper::OpenidConnect.configure do
-        reauthenticate_resource_owner do |*args|
-          passed_args = args
-        end
-      end
-
-      subject.send :reauthenticate_oidc_resource_owner, user
-      passed_args
-    end
-
-    it 'calls reauthenticate_resource_owner with the current user and the return path' do
-      resource_owner, return_to = reauthenticate!
-
-      expect(resource_owner).to eq user
-      expect(return_to).to eq '/oauth/authorize?client_id=foo&prompt=consent+select_account'
-    end
-
-    it 'removes login from the prompt parameter and keeps other values' do
-      _, return_to = reauthenticate!
-      return_params = Rack::Utils.parse_query(URI.parse(return_to).query)
-
-      expect(return_params['prompt']).to eq 'consent select_account'
-    end
-
-    context 'with a reauthenticator that does not generate a response' do
-      let(:performed) { false }
-
-      it 'raises a login_required error' do
-        expect do
-          reauthenticate!
-        end.to raise_error(Doorkeeper::OpenidConnect::Errors::LoginRequired)
-      end
-    end
-  end
-
-  describe '#select_account_for_resource_owner' do
-    before do
-      allow(subject.request).to receive(:path).and_return('/oauth/authorize')
-      allow(subject.request).to receive(:query_parameters) {
-        { client_id: 'foo', prompt: 'login consent select_account' }.with_indifferent_access
-      }
-    end
-
-    def select_account!
-      passed_args = nil
-
-      Doorkeeper::OpenidConnect.configure do
-        select_account_for_resource_owner do |*args|
-          passed_args = args
-        end
-      end
-
-      subject.send :select_account_for_oidc_resource_owner, user
-      passed_args
-    end
-
-    it 'calls select_account_for_resource_owner with the current user and the return path' do
-      resource_owner, return_to = select_account!
-
-      expect(resource_owner).to eq user
-      expect(return_to).to eq '/oauth/authorize?client_id=foo&prompt=login+consent'
-    end
-
-    it 'removes select_account from the prompt parameter and keeps other values' do
-      _, return_to = select_account!
-      return_params = Rack::Utils.parse_query(URI.parse(return_to).query)
-
-      expect(return_params['prompt']).to eq 'login consent'
-    end
-  end
-
-  describe '#pre_auth' do
-    it 'permits nonce parameter' do
-      authorize! nonce: '123456'
-      expect(assigns(:pre_auth).nonce).to eq '123456'
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/controllers/doorkeeper/authorized_applications_controller_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/controllers/doorkeeper/authorized_applications_controller_spec.rb
deleted file mode 100644
index f5e43afc519d8..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/controllers/doorkeeper/authorized_applications_controller_spec.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::AuthorizedApplicationsController, type: :controller do
-  let(:access_token) { create :access_token }
-
-  describe '#index' do
-    it 'does not run the extended #authenticate_resource_owner!' do
-      expect do
-        get :index
-      end.not_to raise_error
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/controllers/userinfo_controller_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/controllers/userinfo_controller_spec.rb
deleted file mode 100644
index ba7007ae5c163..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/controllers/userinfo_controller_spec.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::UserinfoController, type: :controller do
-  let(:client) { create :application }
-  let(:user)   { create :user, name: 'Joe' }
-  let(:token)  { create :access_token, application: client, resource_owner_id: user.id }
-
-  describe '#show' do
-    context 'with a valid access token authorized for the openid scope' do
-      let(:token) { create :access_token, application: client, resource_owner_id: user.id, scopes: 'openid' }
-
-      it 'returns the basic user information as JSON' do
-        get :show, params: { access_token: token.token }
-
-        expect(response.status).to eq 200
-        expect(JSON.parse(response.body)).to eq({
-          'sub'                => user.id.to_s,
-          'variable_name'      => 'openid-name',
-          'created_at'         => user.created_at.to_i,
-          'token_id'           => token.id,
-          'both_responses'     => 'both',
-          'user_info_response' => 'user_info',
-        })
-      end
-    end
-
-    context 'with a valid access token authorized for the openid and profile scopes' do
-      let(:token) { create :access_token, application: client, resource_owner_id: user.id, scopes: 'openid profile' }
-
-      it 'returns the full user information as JSON' do
-        get :show, params: { access_token: token.token }
-
-        expect(response.status).to eq 200
-        expect(JSON.parse(response.body)).to eq({
-          'sub'                => user.id.to_s,
-          'name'               => 'Joe',
-          'variable_name'      => 'profile-name',
-          'created_at'         => user.created_at.to_i,
-          'updated_at'         => user.updated_at.to_i,
-          'token_id'           => token.id,
-          'both_responses'     => 'both',
-          'user_info_response' => 'user_info',
-        })
-      end
-    end
-
-    context 'with a valid access token not authorized for the openid scope' do
-      it 'returns an error' do
-        get :show, params: { access_token: token.token }
-
-        expect(response.status).to eq 403
-      end
-    end
-
-    context 'without a valid access token' do
-      it 'returns an error' do
-        get :show, params: { access_token: 'foobar' }
-
-        expect(response.status).to eq 401
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/Rakefile b/vendor/gems/doorkeeper-openid_connect/spec/dummy/Rakefile
deleted file mode 100644
index 488c551fee2cd..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/Rakefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# frozen_string_literal: true
-
-# Add your own tasks in files placed in lib/tasks ending in .rake,
-# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
-
-require_relative 'config/application'
-
-Rails.application.load_tasks
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/config/manifest.js b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/config/manifest.js
deleted file mode 100644
index bb109908b29eb..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/config/manifest.js
+++ /dev/null
@@ -1,3 +0,0 @@
-
-//= link_tree ../images
-//= link_directory ../stylesheets .css
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/images/.keep b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/images/.keep
deleted file mode 100644
index e69de29bb2d1d..0000000000000
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/javascripts/application.js b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/javascripts/application.js
deleted file mode 100644
index e54c6461cc303..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/javascripts/application.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// This is a manifest file that'll be compiled into application.js, which will include all the files
-// listed below.
-//
-// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
-// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
-//
-// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
-// compiled file. JavaScript code in this file should be added after the last require_* statement.
-//
-// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
-// about supported directives.
-//
-//= require_tree .
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/stylesheets/application.css b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/stylesheets/application.css
deleted file mode 100644
index 0ebd7fe8299eb..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/assets/stylesheets/application.css
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * This is a manifest file that'll be compiled into application.css, which will include all the files
- * listed below.
- *
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
- * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
- *
- * You're free to add application-wide styles to this file and they'll appear at the bottom of the
- * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
- * files in this directory. Styles in this file should be added after the last require_* statement.
- * It is generally better to create a new file per style scope.
- *
- *= require_tree .
- *= require_self
- */
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/channels/application_cable/channel.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/channels/application_cable/channel.rb
deleted file mode 100644
index 9aec2305390f8..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/channels/application_cable/channel.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# frozen_string_literal: true
-
-module ApplicationCable
-  class Channel < ActionCable::Channel::Base
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/channels/application_cable/connection.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/channels/application_cable/connection.rb
deleted file mode 100644
index 8d6c2a1bf4bbe..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/channels/application_cable/connection.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# frozen_string_literal: true
-
-module ApplicationCable
-  class Connection < ActionCable::Connection::Base
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/controllers/application_controller.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/controllers/application_controller.rb
deleted file mode 100644
index 280cc28ce21a0..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/controllers/application_controller.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# frozen_string_literal: true
-
-class ApplicationController < ActionController::Base
-  protect_from_forgery with: :exception
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/controllers/concerns/.keep b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/controllers/concerns/.keep
deleted file mode 100644
index e69de29bb2d1d..0000000000000
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/helpers/application_helper.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/helpers/application_helper.rb
deleted file mode 100644
index 15b06f0f67929..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/helpers/application_helper.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# frozen_string_literal: true
-
-module ApplicationHelper
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/jobs/application_job.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/jobs/application_job.rb
deleted file mode 100644
index d92ffddcb5288..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/jobs/application_job.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# frozen_string_literal: true
-
-class ApplicationJob < ActiveJob::Base
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/mailers/application_mailer.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/mailers/application_mailer.rb
deleted file mode 100644
index d84cb6e71e954..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/mailers/application_mailer.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# frozen_string_literal: true
-
-class ApplicationMailer < ActionMailer::Base
-  default from: 'from@example.com'
-  layout 'mailer'
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/models/application_record.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/models/application_record.rb
deleted file mode 100644
index 71fbba5b32873..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/models/application_record.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# frozen_string_literal: true
-
-class ApplicationRecord < ActiveRecord::Base
-  self.abstract_class = true
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/models/concerns/.keep b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/models/concerns/.keep
deleted file mode 100644
index e69de29bb2d1d..0000000000000
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/models/user.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/models/user.rb
deleted file mode 100644
index 53124f5cce8ce..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/app/models/user.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# frozen_string_literal: true
-
-class User < ActiveRecord::Base
-  def self.authenticate!(name, password)
-    User.where(name: name, password: password).first
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/bundle b/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/bundle
deleted file mode 100755
index 2dbb71769eb04..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/bundle
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env ruby
-# frozen_string_literal: true
-
-ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
-load Gem.bin_path('bundler', 'bundle')
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/rails b/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/rails
deleted file mode 100755
index a31728ab9778f..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/rails
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env ruby
-# frozen_string_literal: true
-
-APP_PATH = File.expand_path('../config/application', __dir__)
-require_relative '../config/boot'
-require 'rails/commands'
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/rake b/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/rake
deleted file mode 100755
index c199955006061..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/rake
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env ruby
-# frozen_string_literal: true
-
-require_relative '../config/boot'
-require 'rake'
-Rake.application.run
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/setup b/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/setup
deleted file mode 100755
index 31400462308ca..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/setup
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env ruby
-# frozen_string_literal: true
-
-require 'pathname'
-require 'fileutils'
-include FileUtils
-
-# path to your application root.
-APP_ROOT = Pathname.new File.expand_path('..', __dir__)
-
-def system!(*args)
-  system(*args) || abort("\n== Command #{args} failed ==")
-end
-
-chdir APP_ROOT do
-  # This script is a starting point to setup your application.
-  # Add necessary setup steps to this file.
-
-  puts '== Installing dependencies =='
-  system! 'gem install bundler --conservative'
-  system('bundle check') || system!('bundle install')
-
-  # puts "\n== Copying sample files =="
-  # unless File.exist?('config/database.yml')
-  #   cp 'config/database.yml.sample', 'config/database.yml'
-  # end
-
-  puts "\n== Preparing database =="
-  system! 'bin/rails db:setup'
-
-  puts "\n== Removing old logs and tempfiles =="
-  system! 'bin/rails log:clear tmp:clear'
-
-  puts "\n== Restarting application server =="
-  system! 'bin/rails restart'
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/update b/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/update
deleted file mode 100755
index 1d6aa6a5c935e..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/bin/update
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env ruby
-# frozen_string_literal: true
-
-require 'pathname'
-require 'fileutils'
-include FileUtils
-
-# path to your application root.
-APP_ROOT = Pathname.new File.expand_path('..', __dir__)
-
-def system!(*args)
-  system(*args) || abort("\n== Command #{args} failed ==")
-end
-
-chdir APP_ROOT do
-  # This script is a way to update your development environment automatically.
-  # Add necessary update steps to this file.
-
-  puts '== Installing dependencies =='
-  system! 'gem install bundler --conservative'
-  system('bundle check') || system!('bundle install')
-
-  puts "\n== Updating database =="
-  system! 'bin/rails db:migrate'
-
-  puts "\n== Removing old logs and tempfiles =="
-  system! 'bin/rails log:clear tmp:clear'
-
-  puts "\n== Restarting application server =="
-  system! 'bin/rails restart'
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config.ru b/vendor/gems/doorkeeper-openid_connect/spec/dummy/config.ru
deleted file mode 100644
index 842bccc3402da..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config.ru
+++ /dev/null
@@ -1,7 +0,0 @@
-# frozen_string_literal: true
-
-# This file is used by Rack-based servers to start the application.
-
-require_relative 'config/environment'
-
-run Rails.application
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/application.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/application.rb
deleted file mode 100644
index f56092cf5d4fc..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/application.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require_relative 'boot'
-
-# Pick the frameworks you want:
-require "active_record/railtie"
-require "action_controller/railtie"
-require "action_view/railtie"
-
-Bundler.require(*Rails.groups)
-
-module Dummy
-  class Application < Rails::Application
-    # Settings in config/environments/* take precedence over those specified here.
-    # Application configuration should go into files in config/initializers
-    # -- all .rb files in that directory are automatically loaded.
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/boot.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/boot.rb
deleted file mode 100644
index c9aef85d4041f..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/boot.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# Set up gems listed in the Gemfile.
-ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __dir__)
-
-require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
-$LOAD_PATH.unshift File.expand_path('../../../lib', __dir__)
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/database.yml b/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/database.yml
deleted file mode 100644
index 5403ee52818c4..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/database.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-# SQLite version 3.x
-#   gem install sqlite3
-#
-#   Ensure the SQLite 3 gem is defined in your Gemfile
-#   gem 'sqlite3'
-#
-development:
-  adapter: sqlite3
-  pool: 5
-  timeout: 5000
-  database: db/development.sqlite3
-
-# Warning: The database defined as "test" will be erased and
-# re-generated from your development database when you run "rake".
-# Do not set this db to the same as development or production.
-test:
-  adapter: sqlite3
-  pool: 5
-  timeout: 5000
-  database: db/test.sqlite3
-
-production:
-  adapter: sqlite3
-  pool: 5
-  timeout: 5000
-  database: db/production.sqlite3
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/environment.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/environment.rb
deleted file mode 100644
index 426333bb46978..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/environment.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# Load the Rails application.
-require_relative 'application'
-
-# Initialize the Rails application.
-Rails.application.initialize!
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/environments/test.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/environments/test.rb
deleted file mode 100644
index 1df1a5931abab..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/environments/test.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# frozen_string_literal: true
-
-Rails.application.configure do
-  # Settings specified here will take precedence over those in config/application.rb.
-
-  # The test environment is used exclusively to run your application's
-  # test suite. You never need to work with it otherwise. Remember that
-  # your test database is "scratch space" for the test suite and is wiped
-  # and recreated between test runs. Don't rely on the data there!
-  config.cache_classes = true
-
-  # Do not eager load code on boot. This avoids loading your whole application
-  # just for the purpose of running a single test. If you are using a tool that
-  # preloads Rails for running tests, you may have to set it to true.
-  config.eager_load = false
-
-  # Show full error reports and disable caching.
-  config.consider_all_requests_local       = true
-  config.action_controller.perform_caching = false
-
-  # Raise exceptions instead of rendering exception templates.
-  config.action_dispatch.show_exceptions = false
-
-  # Disable request forgery protection in test environment.
-  config.action_controller.allow_forgery_protection = false
-
-  # Print deprecation notices to the stderr.
-  config.active_support.deprecation = :stderr
-
-  # Raises error for missing translations
-  # config.action_view.raise_on_missing_translations = true
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/initializers/doorkeeper.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/initializers/doorkeeper.rb
deleted file mode 100644
index a41b1222231a2..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/initializers/doorkeeper.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# frozen_string_literal: true
-
-Doorkeeper.configure do
-  optional_scopes :openid
-
-  resource_owner_authenticator do
-    if params[:current_user].present?
-      User.find(params[:current_user])
-    else
-      redirect_to('/login')
-      nil
-    end
-  end
-
-  grant_flows %w[authorization_code client_credentials implicit_oidc]
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/initializers/doorkeeper_openid_connect.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/initializers/doorkeeper_openid_connect.rb
deleted file mode 100644
index a381972947918..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/initializers/doorkeeper_openid_connect.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-# frozen_string_literal: true
-
-Doorkeeper::OpenidConnect.configure do
-  issuer 'dummy'
-
-  signing_key <<~EOL
-    -----BEGIN RSA PRIVATE KEY-----
-    MIIEpgIBAAKCAQEAsjdnSA6UWUQQHf6BLIkIEUhMRNBJC1NN/pFt1EJmEiI88GS0
-    ceROO5B5Ooo9Y3QOWJ/n+u1uwTHBz0HCTN4wgArWd1TcqB5GQzQRP4eYnWyPfi4C
-    feqAHzQp+v4VwbcK0LW4FqtW5D0dtrFtI281FDxLhARzkhU2y7fuYhL8fVw5rUhE
-    8uwvHRZ5CEZyxf7BSHxIvOZAAymhuzNLATt2DGkDInU1BmF75tEtBJAVLzWG/j4L
-    PZh1EpSdfezqaXQlcy9PJi916UzTl0P7Yy+ulOdUsMlB6yo8qKTY1+AbZ5jzneHb
-    GDU/O8QjYvii1WDmJ60t0jXicmOkGrOhruOptwIDAQABAoIBAQChYNwMeu9IugJi
-    NsEf4+JDTBWMRpOuRrwcpfIvQAUPrKNEB90COPvCoju0j9OxCDmpdPtq1K/zD6xx
-    khlw485FVAsKufSp4+g6GJ75yT6gZtq1JtKo1L06BFFzb7uh069eeP7+wB6JxPHw
-    KlAqwxvsfADhxeolQUKCTMb3Vjv/Aw2cO/nn6RAOeftw2aDmFy8Xl+oTUtSxyib0
-    YCdU9cK8MxsxDdmowwHp04xRTm/wfG5hLEn7HMz1PP86iP9BiFsCqTId9dxEUTS1
-    K+VAt9FbxRAq5JlBocxUMHNxLigb94Ca2FOMR7F6l/tronLfHD801YoObF0fN9qW
-    Cgw4aTO5AoGBAOR79hiZVM7/l1cBid7hKSeMWKUZ/nrwJsVfNpu1H9xt9uDu+79U
-    mcGfM7pm7L2qCNGg7eeWBHq2CVg/XQacRNtcTlomFrw4tDXUkFN1hE56t1iaTs9m
-    dN9IDr6jFgf6UaoOxxoPT9Q1ZtO46l043Nzrkoz8cBEBaBY20bUDwCYjAoGBAMet
-    tt1ImGF1cx153KbOfjl8v54VYUVkmRNZTa1E821nL/EMpoONSqJmRVsX7grLyPL1
-    QyZe245NOvn63YM0ng0rn2osoKsMVJwYBEYjHL61iF6dPtW5p8FIs7auRnC3NrG0
-    XxHATZ4xhHD0iIn14iXh0XIhUVk+nGktHU1gbmVdAoGBANniwKdqqS6RHKBTDkgm
-    Dhnxw6MGa+CO3VpA1xGboxuRHeoY3KfzpIC5MhojBsZDvQ8zWUwMio7+w2CNZEfm
-    g99wYiOjyPCLXocrAssj+Rzh97AdzuQHf5Jh4/W2Dk9jTbdPSl02ltj2Z+2lnJFz
-    pWNjnqimHrSI09rDQi5NulJjAoGBAImquujVpDmNQFCSNA7NTzlTSMk09FtjgCZW
-    67cKUsqa2fLXRfZs84gD+s1TMks/NMxNTH6n57e0h3TSAOb04AM0kDQjkKJdXfhA
-    lrHEg4z4m4yf3TJ9Tat09HJ+tRIBPzRFp0YVz23Btg4qifiUDdcQWdbWIb/l6vCY
-    qhsu4O4BAoGBANbceYSDYRdT7a5QjJGibkC90Z3vFe4rDTBgZWg7xG0cpSU4JNg7
-    SFR3PjWQyCg7aGGXiooCM38YQruACTj0IFub24MFRA4ZTXvrACvpsVokJlQiG0Z4
-    tuQKYki41JvYqPobcq/rLE/AM7PKJftW35nqFuj0MrsUwPacaVwKBf5J
-    -----END RSA PRIVATE KEY-----
-  EOL
-
-  subject_types_supported [:public]
-
-  resource_owner_from_access_token do |access_token|
-    User.find_by(id: access_token.resource_owner_id)
-  end
-
-  auth_time_from_resource_owner do |resource_owner|
-    resource_owner.current_sign_in_at
-  end
-
-  reauthenticate_resource_owner do |_resource_owner, _return_to|
-    redirect_to '/reauthenticate'
-  end
-
-  select_account_for_resource_owner do |_resource_owner, _return_to|
-    redirect_to '/select_account'
-  end
-
-  subject do |resource_owner|
-    resource_owner.id
-  end
-
-  claims do
-    claim :name do |user|
-      user.name
-    end
-
-    claim :variable_name, scope: :openid do |user, scopes|
-      scopes.exists?(:profile) ? 'profile-name' : 'openid-name'
-    end
-
-    claim :created_at, scope: :openid do |user|
-      user.created_at.to_i
-    end
-
-    claim :updated_at do |user|
-      user.updated_at.to_i
-    end
-
-    claim :token_id, scope: :openid do |user, scopes, token|
-      token.id
-    end
-
-    claim(:both_responses, scope: :openid, response: [:id_token, :user_info]) { 'both' }
-    claim(:id_token_response, scope: :openid, response: [:id_token]) { 'id_token' }
-    claim(:user_info_response, scope: :openid, response: :user_info) { 'user_info' }
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/locales/doorkeeper_openid_connect.en.yml b/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/locales/doorkeeper_openid_connect.en.yml
deleted file mode 100644
index 1bed506b2cf19..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/locales/doorkeeper_openid_connect.en.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-en:
-  doorkeeper:
-    scopes:
-      openid: 'Authenticate your account'
-      profile: 'View your profile information'
-      email: 'View your email address'
-      address: 'View your physical address'
-      phone: 'View your phone number'
-    errors:
-      messages:
-        login_required: 'The authorization server requires end-user authentication'
-        consent_required: 'The authorization server requires end-user consent'
-        interaction_required: 'The authorization server requires end-user interaction'
-        account_selection_required: 'The authorization server requires end-user account selection'
-    openid_connect:
-      errors:
-        messages:
-          # Configuration error messages
-          resource_owner_from_access_token_not_configured: 'Failure due to Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token missing configuration.'
-          auth_time_from_resource_owner_not_configured: 'Failure due to Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner missing configuration.'
-          reauthenticate_resource_owner_not_configured: 'Failure due to Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner missing configuration.'
-          select_account_for_resource_owner_not_configured: 'Failure due to Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner missing configuration.'
-          subject_not_configured: 'ID Token generation failed due to Doorkeeper::OpenidConnect.configure.subject missing configuration.'
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/routes.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/routes.rb
deleted file mode 100644
index e182346eb5312..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/routes.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-Rails.application.routes.draw do
-  use_doorkeeper
-  use_doorkeeper_openid_connect
-
-  root 'dummy#index'
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/secrets.yml b/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/secrets.yml
deleted file mode 100644
index 77b0f4db7a467..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/config/secrets.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Your secret key is used for verifying the integrity of signed cookies.
-# If you change this key, all old signed cookies will become invalid!
-
-# Make sure the secret is at least 30 characters and all random,
-# no regular words or you'll be exposed to dictionary attacks.
-# You can use `rails secret` to generate a secure secret key.
-
-# Make sure the secrets in this file are kept private
-# if you're sharing your code publicly.
-
-development:
-  secret_key_base: 047f8d91118b6fad743ccac15928b306d1880d9d104377eb1f7aeed909ce852c0a214074742163a6e0bc814482c8cdeae470c5edfc75eee37c8da6ccbbae4199
-
-test:
-  secret_key_base: 88becc3eb1c84af38da6deea4627f29f2bd41ba79dd279a0e379a41a82f18316f6f5221c73182adca329df8be13fd7c115804a82246989f1314e93d7efc745d3
-
-# Do not keep production secrets in the repository,
-# instead read values from the environment.
-production:
-  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20111122132257_create_users.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20111122132257_create_users.rb
deleted file mode 100644
index 3991429575b71..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20111122132257_create_users.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-# frozen_string_literal: true
-
-class CreateUsers < ActiveRecord::Migration[4.2]
-  def change
-    create_table :users do |t|
-      t.string :name
-
-      t.timestamps
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb
deleted file mode 100644
index 67d3728c6c49f..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# frozen_string_literal: true
-
-class AddPasswordToUsers < ActiveRecord::Migration[4.2]
-  def change
-    add_column :users, :password, :string
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb
deleted file mode 100644
index 91bdbf507464b..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-# frozen_string_literal: true
-
-class CreateDoorkeeperTables < ActiveRecord::Migration[4.2]
-  def change
-    create_table :oauth_applications do |t|
-      t.string  :name,         null: false
-      t.string  :uid,          null: false
-      t.string  :secret,       null: false
-      t.text    :redirect_uri, null: false
-      t.string  :scopes,       null: false, default: ''
-      t.timestamps             null: false
-    end
-
-    add_index :oauth_applications, :uid, unique: true
-
-    create_table :oauth_access_grants do |t|
-      t.integer  :resource_owner_id, null: false
-      t.references :application,     null: false
-      t.string   :token,             null: false
-      t.integer  :expires_in,        null: false
-      t.text     :redirect_uri,      null: false
-      t.datetime :created_at,        null: false
-      t.datetime :revoked_at
-      t.string   :scopes
-    end
-
-    add_index :oauth_access_grants, :token, unique: true
-    add_foreign_key(
-      :oauth_access_grants,
-      :oauth_applications,
-      column: :application_id,
-    )
-
-    create_table :oauth_access_tokens do |t|
-      t.integer  :resource_owner_id
-      t.references :application
-
-      # If you use a custom token generator you may need to change this column
-      # from string to text, so that it accepts tokens larger than 255
-      # characters. More info on custom token generators in:
-      # https://github.com/doorkeeper-gem/doorkeeper/tree/v3.0.0.rc1#custom-access-token-generator
-      #
-      # t.text     :token,             null: false
-      t.string   :token,             null: false
-
-      t.string   :refresh_token
-      t.integer  :expires_in
-      t.datetime :revoked_at
-      t.datetime :created_at,        null: false
-      t.string   :scopes
-    end
-
-    add_index :oauth_access_tokens, :token, unique: true
-    add_index :oauth_access_tokens, :resource_owner_id
-    add_index :oauth_access_tokens, :refresh_token, unique: true
-    add_foreign_key(
-      :oauth_access_tokens,
-      :oauth_applications,
-      column: :application_id,
-    )
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20151223200000_add_owner_to_application.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20151223200000_add_owner_to_application.rb
deleted file mode 100644
index d4eda38df0f1c..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20151223200000_add_owner_to_application.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# frozen_string_literal: true
-
-class AddOwnerToApplication < ActiveRecord::Migration[4.2]
-  def change
-    add_column :oauth_applications, :owner_id, :integer, null: true
-    add_column :oauth_applications, :owner_type, :string, null: true
-    add_index :oauth_applications, [:owner_id, :owner_type]
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20160320211015_add_previous_refresh_token_to_access_tokens.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20160320211015_add_previous_refresh_token_to_access_tokens.rb
deleted file mode 100644
index ffad61b260a8a..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20160320211015_add_previous_refresh_token_to_access_tokens.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-# frozen_string_literal: true
-
-class AddPreviousRefreshTokenToAccessTokens < ActiveRecord::Migration[4.2]
-  def change
-    add_column(
-      :oauth_access_tokens,
-      :previous_refresh_token,
-      :string,
-      default: '',
-      null: false
-    )
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20161102204540_add_current_sign_in_at_to_users.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20161102204540_add_current_sign_in_at_to_users.rb
deleted file mode 100644
index 6b5d2ba96f1e1..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20161102204540_add_current_sign_in_at_to_users.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# frozen_string_literal: true
-
-class AddCurrentSignInAtToUsers < ActiveRecord::Migration[4.2]
-  def change
-    add_column :users, :current_sign_in_at, :datetime
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20180904152859_add_confidential_to_applications.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20180904152859_add_confidential_to_applications.rb
deleted file mode 100644
index 784af8828f5c3..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20180904152859_add_confidential_to_applications.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-# frozen_string_literal: true
-
-class AddConfidentialToApplications < ActiveRecord::Migration[5.0]
-  def change
-    add_column(
-      :oauth_applications,
-      :confidential,
-      :boolean,
-      null: false,
-      default: true
-    )
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20221122044143_enable_pkce.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20221122044143_enable_pkce.rb
deleted file mode 100644
index 96b4e1f7a3f24..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/migrate/20221122044143_enable_pkce.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# frozen_string_literal: true
-
-class EnablePkce < ActiveRecord::Migration[6.0]
-  def change
-    add_column :oauth_access_grants, :code_challenge, :string, null: true
-    add_column :oauth_access_grants, :code_challenge_method, :string, null: true
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/schema.rb b/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/schema.rb
deleted file mode 100644
index 8c4e100b4804a..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/db/schema.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-# This file is auto-generated from the current state of the database. Instead
-# of editing this file, please use the migrations feature of Active Record to
-# incrementally modify your database, and then regenerate this schema definition.
-#
-# This file is the source Rails uses to define your schema when running `rails
-# db:schema:load`. When creating a new database, `rails db:schema:load` tends to
-# be faster and is potentially less error prone than running all of your
-# migrations from scratch. Old migrations may fail to apply correctly if those
-# migrations use external dependencies or application code.
-#
-# It's strongly recommended that you check this file into your version control system.
-
-ActiveRecord::Schema.define(version: 2022_11_22_044143) do
-
-  create_table "oauth_access_grants", force: :cascade do |t|
-    t.integer "resource_owner_id", null: false
-    t.integer "application_id", null: false
-    t.string "token", null: false
-    t.integer "expires_in", null: false
-    t.text "redirect_uri", null: false
-    t.datetime "created_at", null: false
-    t.datetime "revoked_at"
-    t.string "scopes"
-    t.string "code_challenge"
-    t.string "code_challenge_method"
-    t.index ["token"], name: "index_oauth_access_grants_on_token", unique: true
-  end
-
-  create_table "oauth_access_tokens", force: :cascade do |t|
-    t.integer "resource_owner_id"
-    t.integer "application_id"
-    t.string "token", null: false
-    t.string "refresh_token"
-    t.integer "expires_in"
-    t.datetime "revoked_at"
-    t.datetime "created_at", null: false
-    t.string "scopes"
-    t.string "previous_refresh_token", default: "", null: false
-    t.index ["refresh_token"], name: "index_oauth_access_tokens_on_refresh_token", unique: true
-    t.index ["resource_owner_id"], name: "index_oauth_access_tokens_on_resource_owner_id"
-    t.index ["token"], name: "index_oauth_access_tokens_on_token", unique: true
-  end
-
-  create_table "oauth_applications", force: :cascade do |t|
-    t.string "name", null: false
-    t.string "uid", null: false
-    t.string "secret", null: false
-    t.text "redirect_uri", null: false
-    t.string "scopes", default: "", null: false
-    t.datetime "created_at", null: false
-    t.datetime "updated_at", null: false
-    t.integer "owner_id"
-    t.string "owner_type"
-    t.boolean "confidential", default: true, null: false
-    t.index ["owner_id", "owner_type"], name: "index_oauth_applications_on_owner_id_and_owner_type"
-    t.index ["uid"], name: "index_oauth_applications_on_uid", unique: true
-  end
-
-  create_table "oauth_openid_requests", force: :cascade do |t|
-    t.integer "access_grant_id", null: false
-    t.string "nonce", null: false
-    t.index ["access_grant_id"], name: "index_oauth_openid_requests_on_access_grant_id"
-  end
-
-  create_table "users", force: :cascade do |t|
-    t.string "name"
-    t.datetime "created_at"
-    t.datetime "updated_at"
-    t.string "password"
-    t.datetime "current_sign_in_at"
-  end
-
-  add_foreign_key "oauth_access_grants", "oauth_applications", column: "application_id"
-  add_foreign_key "oauth_access_tokens", "oauth_applications", column: "application_id"
-  add_foreign_key "oauth_openid_requests", "oauth_access_grants", column: "access_grant_id", on_delete: :cascade
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/lib/assets/.keep b/vendor/gems/doorkeeper-openid_connect/spec/dummy/lib/assets/.keep
deleted file mode 100644
index e69de29bb2d1d..0000000000000
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/log/.keep b/vendor/gems/doorkeeper-openid_connect/spec/dummy/log/.keep
deleted file mode 100644
index e69de29bb2d1d..0000000000000
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/public/404.html b/vendor/gems/doorkeeper-openid_connect/spec/dummy/public/404.html
deleted file mode 100644
index b612547fc21d0..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/public/404.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <title>The page you were looking for doesn't exist (404)</title>
-  <meta name="viewport" content="width=device-width,initial-scale=1">
-  <style>
-  body {
-    background-color: #EFEFEF;
-    color: #2E2F30;
-    text-align: center;
-    font-family: arial, sans-serif;
-    margin: 0;
-  }
-
-  div.dialog {
-    width: 95%;
-    max-width: 33em;
-    margin: 4em auto 0;
-  }
-
-  div.dialog > div {
-    border: 1px solid #CCC;
-    border-right-color: #999;
-    border-left-color: #999;
-    border-bottom-color: #BBB;
-    border-top: #B00100 solid 4px;
-    border-top-left-radius: 9px;
-    border-top-right-radius: 9px;
-    background-color: white;
-    padding: 7px 12% 0;
-    box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
-  }
-
-  h1 {
-    font-size: 100%;
-    color: #730E15;
-    line-height: 1.5em;
-  }
-
-  div.dialog > p {
-    margin: 0 0 1em;
-    padding: 1em;
-    background-color: #F7F7F7;
-    border: 1px solid #CCC;
-    border-right-color: #999;
-    border-left-color: #999;
-    border-bottom-color: #999;
-    border-bottom-left-radius: 4px;
-    border-bottom-right-radius: 4px;
-    border-top-color: #DADADA;
-    color: #666;
-    box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
-  }
-  </style>
-</head>
-
-<body>
-  <!-- This file lives in public/404.html -->
-  <div class="dialog">
-    <div>
-      <h1>The page you were looking for doesn't exist.</h1>
-      <p>You may have mistyped the address or the page may have moved.</p>
-    </div>
-    <p>If you are the application owner check the logs for more information.</p>
-  </div>
-</body>
-</html>
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/public/422.html b/vendor/gems/doorkeeper-openid_connect/spec/dummy/public/422.html
deleted file mode 100644
index a21f82b3bdb81..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/public/422.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <title>The change you wanted was rejected (422)</title>
-  <meta name="viewport" content="width=device-width,initial-scale=1">
-  <style>
-  body {
-    background-color: #EFEFEF;
-    color: #2E2F30;
-    text-align: center;
-    font-family: arial, sans-serif;
-    margin: 0;
-  }
-
-  div.dialog {
-    width: 95%;
-    max-width: 33em;
-    margin: 4em auto 0;
-  }
-
-  div.dialog > div {
-    border: 1px solid #CCC;
-    border-right-color: #999;
-    border-left-color: #999;
-    border-bottom-color: #BBB;
-    border-top: #B00100 solid 4px;
-    border-top-left-radius: 9px;
-    border-top-right-radius: 9px;
-    background-color: white;
-    padding: 7px 12% 0;
-    box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
-  }
-
-  h1 {
-    font-size: 100%;
-    color: #730E15;
-    line-height: 1.5em;
-  }
-
-  div.dialog > p {
-    margin: 0 0 1em;
-    padding: 1em;
-    background-color: #F7F7F7;
-    border: 1px solid #CCC;
-    border-right-color: #999;
-    border-left-color: #999;
-    border-bottom-color: #999;
-    border-bottom-left-radius: 4px;
-    border-bottom-right-radius: 4px;
-    border-top-color: #DADADA;
-    color: #666;
-    box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
-  }
-  </style>
-</head>
-
-<body>
-  <!-- This file lives in public/422.html -->
-  <div class="dialog">
-    <div>
-      <h1>The change you wanted was rejected.</h1>
-      <p>Maybe you tried to change something you didn't have access to.</p>
-    </div>
-    <p>If you are the application owner check the logs for more information.</p>
-  </div>
-</body>
-</html>
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/public/500.html b/vendor/gems/doorkeeper-openid_connect/spec/dummy/public/500.html
deleted file mode 100644
index 061abc587dcac..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/dummy/public/500.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <title>We're sorry, but something went wrong (500)</title>
-  <meta name="viewport" content="width=device-width,initial-scale=1">
-  <style>
-  body {
-    background-color: #EFEFEF;
-    color: #2E2F30;
-    text-align: center;
-    font-family: arial, sans-serif;
-    margin: 0;
-  }
-
-  div.dialog {
-    width: 95%;
-    max-width: 33em;
-    margin: 4em auto 0;
-  }
-
-  div.dialog > div {
-    border: 1px solid #CCC;
-    border-right-color: #999;
-    border-left-color: #999;
-    border-bottom-color: #BBB;
-    border-top: #B00100 solid 4px;
-    border-top-left-radius: 9px;
-    border-top-right-radius: 9px;
-    background-color: white;
-    padding: 7px 12% 0;
-    box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
-  }
-
-  h1 {
-    font-size: 100%;
-    color: #730E15;
-    line-height: 1.5em;
-  }
-
-  div.dialog > p {
-    margin: 0 0 1em;
-    padding: 1em;
-    background-color: #F7F7F7;
-    border: 1px solid #CCC;
-    border-right-color: #999;
-    border-left-color: #999;
-    border-bottom-color: #999;
-    border-bottom-left-radius: 4px;
-    border-bottom-right-radius: 4px;
-    border-top-color: #DADADA;
-    color: #666;
-    box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
-  }
-  </style>
-</head>
-
-<body>
-  <!-- This file lives in public/500.html -->
-  <div class="dialog">
-    <div>
-      <h1>We're sorry, but something went wrong.</h1>
-    </div>
-    <p>If you are the application owner check the logs for more information.</p>
-  </div>
-</body>
-</html>
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/dummy/public/favicon.ico b/vendor/gems/doorkeeper-openid_connect/spec/dummy/public/favicon.ico
deleted file mode 100644
index e69de29bb2d1d..0000000000000
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/factories.rb b/vendor/gems/doorkeeper-openid_connect/spec/factories.rb
deleted file mode 100644
index 2b30682e1de8e..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/factories.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-# frozen_string_literal: true
-
-FactoryBot.define do
-  factory :access_grant, class: 'Doorkeeper::AccessGrant' do
-    resource_owner_id { create(:user).id }
-    application
-    redirect_uri { 'https://app.com/callback' }
-    expires_in { 100 }
-    scopes { 'public write' }
-  end
-
-  factory :access_token, class: 'Doorkeeper::AccessToken' do
-    resource_owner_id { create(:user).id }
-    application
-    expires_in { 2.hours }
-
-    factory :clientless_access_token do
-      application { nil }
-    end
-  end
-
-  factory :application, class: 'Doorkeeper::Application' do
-    sequence(:name) { |n| "Application #{n}" }
-    redirect_uri { 'https://app.com/callback' }
-  end
-
-  factory :user do
-    current_sign_in_at { Time.zone.at(23) }
-  end
-
-  factory :openid_request, class: 'Doorkeeper::OpenidConnect::Request' do
-    access_grant
-    sequence(:nonce, &:to_s)
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/claims/claim_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/claims/claim_spec.rb
deleted file mode 100644
index 24e66e8228f3c..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/claims/claim_spec.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::Claims::Claim do
-  subject { described_class.new name: 'username', scope: 'profile' }
-
-  describe '#initialize' do
-    it 'uses the given name' do
-      expect(subject.name).to eq :username
-    end
-
-    it 'uses the given scope' do
-      expect(subject.scope).to eq :profile
-    end
-
-    it 'falls back to the default scope for standard claims' do
-      expect(described_class.new(name: 'family_name').scope).to eq :profile
-      expect(described_class.new(name: :family_name).scope).to eq :profile
-      expect(described_class.new(name: 'email').scope).to eq :email
-      expect(described_class.new(name: :email).scope).to eq :email
-      expect(described_class.new(name: 'address').scope).to eq :address
-      expect(described_class.new(name: :address).scope).to eq :address
-      expect(described_class.new(name: 'phone_number').scope).to eq :phone
-      expect(described_class.new(name: :phone_number).scope).to eq :phone
-    end
-
-    it 'falls back to the profile scope for non-standard claims' do
-      expect(described_class.new(name: 'unknown').scope).to eq :profile
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/config_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/config_spec.rb
deleted file mode 100644
index 5de7af5d14a64..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/config_spec.rb
+++ /dev/null
@@ -1,232 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect, 'configuration' do
-  subject { described_class.configuration }
-
-  describe '#configure' do
-    it 'fails if not set to :active_record' do
-      # stub ORM setup to avoid Doorkeeper exceptions
-      allow(Doorkeeper).to receive(:setup_orm_adapter)
-      allow(Doorkeeper).to receive(:setup_orm_models)
-      allow(Doorkeeper).to receive(:setup_application_owner)
-
-      Doorkeeper.configure do
-        orm :mongoid
-      end
-
-      expect do
-        described_class.configure {}
-      end.to raise_error Doorkeeper::OpenidConnect::Errors::InvalidConfiguration
-    end
-  end
-
-  describe 'jws_private_key' do
-    it 'delegates to signing_key' do
-      value = 'private_key'
-      described_class.configure do
-        jws_private_key value
-      end
-      expect(subject.signing_key).to eq(value)
-    end
-  end
-
-  describe 'signing_key' do
-    it 'sets the value that is accessible via signing_key' do
-      value = 'private_key'
-      described_class.configure do
-        signing_key value
-      end
-      expect(subject.signing_key).to eq(value)
-    end
-  end
-
-  describe 'issuer' do
-    it 'sets the value that is accessible via issuer' do
-      value = 'issuer'
-      described_class.configure do
-        issuer value
-      end
-      expect(subject.issuer).to eq(value)
-    end
-
-    it 'sets the block that is accessible via issuer' do
-      block = proc {}
-      described_class.configure do
-        issuer(&block)
-      end
-      expect(subject.issuer).to eq(block)
-    end
-  end
-
-  describe 'resource_owner_from_access_token' do
-    it 'sets the block that is accessible via resource_owner_from_access_token' do
-      block = proc {}
-      described_class.configure do
-        resource_owner_from_access_token(&block)
-      end
-      expect(subject.resource_owner_from_access_token).to eq(block)
-    end
-
-    it 'fails if unset' do
-      described_class.configure {}
-
-      expect do
-        subject.resource_owner_from_access_token.call
-      end.to raise_error Doorkeeper::OpenidConnect::Errors::InvalidConfiguration
-    end
-  end
-
-  describe 'auth_time_from_resource_owner' do
-    it 'sets the block that is accessible via auth_time_from_resource_owner' do
-      block = proc {}
-      described_class.configure do
-        auth_time_from_resource_owner(&block)
-      end
-      expect(subject.auth_time_from_resource_owner).to eq(block)
-    end
-
-    it 'fails if unset' do
-      described_class.configure {}
-
-      expect do
-        subject.auth_time_from_resource_owner.call
-      end.to raise_error Doorkeeper::OpenidConnect::Errors::InvalidConfiguration
-    end
-  end
-
-  describe 'reauthenticate_resource_owner' do
-    it 'sets the block that is accessible via reauthenticate_resource_owner' do
-      block = proc {}
-      described_class.configure do
-        reauthenticate_resource_owner(&block)
-      end
-      expect(subject.reauthenticate_resource_owner).to eq(block)
-    end
-
-    it 'fails if unset' do
-      described_class.configure {}
-
-      expect do
-        subject.reauthenticate_resource_owner.call
-      end.to raise_error Doorkeeper::OpenidConnect::Errors::InvalidConfiguration
-    end
-  end
-
-  describe 'select_account_for_resource_owner' do
-    it 'sets the block that is accessible via select_account_for_resource_owner' do
-      block = proc {}
-      described_class.configure do
-        select_account_for_resource_owner(&block)
-      end
-      expect(subject.select_account_for_resource_owner).to eq(block)
-    end
-
-    it 'fails if unset' do
-      described_class.configure {}
-
-      expect do
-        subject.select_account_for_resource_owner.call
-      end.to raise_error Doorkeeper::OpenidConnect::Errors::InvalidConfiguration
-    end
-  end
-
-  describe 'subject' do
-    it 'sets the block that is accessible via subject' do
-      block = proc {}
-      described_class.configure do
-        subject(&block)
-      end
-      expect(subject.subject).to eq(block)
-    end
-
-    it 'fails if unset' do
-      described_class.configure {}
-
-      expect do
-        subject.subject.call
-      end.to raise_error Doorkeeper::OpenidConnect::Errors::InvalidConfiguration
-    end
-  end
-
-  describe 'expiration' do
-    it 'sets the value that is accessible via expiration' do
-      value = 'expiration'
-      described_class.configure do
-        expiration value
-      end
-      expect(subject.expiration).to eq(value)
-    end
-  end
-
-  describe 'claims' do
-    it 'sets the claims configuration that is accessible via claims' do
-      described_class.configure do
-        claims do
-        end
-      end
-      expect(subject.claims).not_to be_nil
-    end
-  end
-
-  describe 'protocol' do
-    it 'defaults to https in production' do
-      expect(::Rails.env).to receive(:production?).and_return(true)
-
-      expect(subject.protocol.call).to eq(:https)
-    end
-
-    it 'defaults to http in other environments' do
-      expect(::Rails.env).to receive(:production?).and_return(false)
-
-      expect(subject.protocol.call).to eq(:http)
-    end
-
-    it 'can be set to other protocols' do
-      described_class.configure do
-        protocol { :ftp }
-      end
-
-      expect(subject.protocol.call).to eq(:ftp)
-    end
-  end
-
-  describe 'end_session_endpoint' do
-    it 'defaults to nil' do
-      expect(subject.end_session_endpoint.call).to be_nil
-    end
-
-    it 'can be set to a custom url' do
-      described_class.configure do
-        end_session_endpoint { 'http://test.host/logout' }
-      end
-
-      expect(subject.end_session_endpoint.call).to eq('http://test.host/logout')
-    end
-  end
-
-  describe 'discovery_url_options' do
-    it 'defaults to empty hash' do
-      expect(subject.discovery_url_options.call).to be_kind_of(Hash)
-      expect(subject.discovery_url_options.call).to be_empty
-    end
-
-    it 'can be set to other hosts' do
-      Doorkeeper::OpenidConnect.configure do
-        discovery_url_options do |request|
-          {
-            authorization: { host: 'alternate-authorization-host' },
-            token: { host: 'alternate-token-host' },
-            revocation: { host: 'alternate-revocation-host' },
-            introspection: { host: 'alternate-introspection-host' },
-            userinfo: { host: 'alternate-userinfo-host' },
-            jwks: { host: 'alternate-jwks-host' }
-          }
-        end
-      end
-
-      expect(subject.discovery_url_options.call[:authorization]).to eq(host: 'alternate-authorization-host')
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/id_token_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/id_token_spec.rb
deleted file mode 100644
index 2e9e6722670f4..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/id_token_spec.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::IdToken do
-  subject { described_class.new(access_token, nonce) }
-
-  let(:access_token) { create :access_token, resource_owner_id: user.id, scopes: 'openid' }
-  let(:user) { create :user }
-  let(:nonce) { '123456' }
-
-  before do
-    allow(Time).to receive(:now) { Time.zone.at 60 }
-  end
-
-  describe '#nonce' do
-    it 'returns the stored nonce' do
-      expect(subject.nonce).to eq '123456'
-    end
-  end
-
-  describe '#claims' do
-    it 'returns all default claims' do
-      expect(subject.claims).to eq(
-        iss: 'dummy',
-        sub: user.id.to_s,
-        aud: access_token.application.uid,
-        exp: 180,
-        iat: 60,
-        nonce: nonce,
-        auth_time: 23,
-        both_responses: 'both',
-        id_token_response: 'id_token',
-      )
-    end
-
-    context 'when application is not set on the access token' do
-      before do
-        access_token.application = nil
-      end
-
-      it 'returns all default claims except audience' do
-        expect(subject.claims).to eq(
-          iss: 'dummy',
-          sub: user.id.to_s,
-          aud: nil,
-          exp: 180,
-          iat: 60,
-          nonce: nonce,
-          auth_time: 23,
-          both_responses: 'both',
-          id_token_response: 'id_token',
-        )
-      end
-    end
-  end
-
-  describe '#as_json' do
-    it 'returns claims with nil values and empty strings removed' do
-      allow(subject).to receive(:issuer).and_return(nil)
-      allow(subject).to receive(:subject).and_return('')
-      allow(subject).to receive(:audience).and_return(' ')
-
-      json = subject.as_json
-
-      expect(json).not_to include :iss
-      expect(json).not_to include :sub
-      expect(json).to include :aud
-    end
-  end
-
-  describe '#as_jws_token' do
-    shared_examples 'a jws token' do
-      it 'returns claims encoded as JWT' do
-        algorithms = [Doorkeeper::OpenidConnect.signing_algorithm.to_s]
-
-        data, headers = ::JWT.decode subject.as_jws_token, Doorkeeper::OpenidConnect.signing_key.keypair, true, { algorithms: algorithms }
-
-        expect(data.to_hash).to eq subject.as_json.stringify_keys
-        expect(headers["kid"]).to eq Doorkeeper::OpenidConnect.signing_key.kid
-        expect(headers["alg"]).to eq Doorkeeper::OpenidConnect.signing_algorithm.to_s
-      end
-    end
-
-    it_behaves_like 'a jws token'
-
-    context 'when signing_algorithm is EC' do
-      before { configure_ec }
-
-      it_behaves_like 'a jws token'
-    end
-
-    context 'when signing_algorithm is HMAC' do
-      before { configure_hmac }
-
-      it_behaves_like 'a jws token'
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/id_token_token_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/id_token_token_spec.rb
deleted file mode 100644
index 597fff64008de..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/id_token_token_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::IdTokenToken do
-  subject { described_class.new(access_token, nonce) }
-
-  let(:access_token) { create :access_token, resource_owner_id: user.id, scopes: 'openid' }
-  let(:user) { create :user }
-  let(:nonce) { '123456' }
-
-  before do
-    allow(Time).to receive(:now) { Time.zone.at 60 }
-  end
-
-  describe '#claims' do
-    it 'returns all default claims' do
-      # access token is from http://openid.net/specs/openid-connect-core-1_0.html
-      # so we can test `at_hash` value
-      access_token.update(token: 'jHkWEdUXMU1BwAsC4vtUsZwnNvTIxEl0z9K3vx5KF0Y')
-
-      expect(subject.claims).to eq({
-        iss: 'dummy',
-        sub: user.id.to_s,
-        aud: access_token.application.uid,
-        exp: 180,
-        iat: 60,
-        nonce: nonce,
-        auth_time: 23,
-        at_hash: '77QmUPtjPfzWtF2AnpK9RQ',
-        both_responses: 'both',
-        id_token_response: 'id_token',
-      })
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/authorization/code_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/authorization/code_spec.rb
deleted file mode 100644
index 0062c109c6779..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/authorization/code_spec.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::OAuth::Authorization::Code do
-  subject { Doorkeeper::OAuth::Authorization::Code.new pre_auth, resource_owner }
-
-  let(:resource_owner) { create :user }
-  let(:access_grant) { create :access_grant }
-  let(:pre_auth) { double }
-  let(:client) { double }
-
-  describe '#issue_token' do
-    before do
-      allow(pre_auth).to receive(:client) { client }
-      allow(pre_auth).to receive(:redirect_uri).and_return('redirect_uri')
-      allow(pre_auth).to receive(:scopes).and_return('scopes')
-      allow(pre_auth).to receive(:nonce).and_return('123456')
-      allow(pre_auth).to receive(:code_challenge).and_return('987654')
-      allow(pre_auth).to receive(:code_challenge_method).and_return('plain')
-      allow(pre_auth).to receive(:custom_access_token_attributes).and_return({})
-      allow(client).to receive(:id).and_return('client_id')
-
-      allow(Doorkeeper::AccessGrant).to receive(:create!) { access_grant }
-      allow(Doorkeeper::OpenidConnect::Request).to receive(:create!)
-    end
-
-    it 'stores the nonce' do
-      subject.issue_token
-
-      expect(Doorkeeper::OpenidConnect::Request).to have_received(:create!).with({
-        access_grant: access_grant,
-        nonce: '123456'
-      })
-    end
-
-    it 'does not store the nonce if not present' do
-      allow(pre_auth).to receive(:nonce).and_return(nil)
-      subject.issue_token
-
-      expect(Doorkeeper::OpenidConnect::Request).not_to have_received(:create!)
-    end
-
-    it 'does not store the nonce if blank' do
-      allow(pre_auth).to receive(:nonce).and_return(' ')
-      subject.issue_token
-
-      expect(Doorkeeper::OpenidConnect::Request).not_to have_received(:create!)
-    end
-
-    it 'returns the created grant' do
-      expect(subject.issue_token).to be_a Doorkeeper::AccessGrant
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/authorization_code_request_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/authorization_code_request_spec.rb
deleted file mode 100644
index 8e5b242391fae..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/authorization_code_request_spec.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::OAuth::AuthorizationCodeRequest do
-  subject do
-    Doorkeeper::OAuth::AuthorizationCodeRequest.new(server, grant, client).tap do |request|
-      request.instance_variable_set '@response', response
-      request.instance_variable_set('@access_token', token)
-    end
-  end
-
-  let(:server) { double }
-  let(:client) { double }
-  let(:grant) { create :access_grant, openid_request: openid_request }
-  let(:openid_request) { create :openid_request, nonce: '123456' }
-  let(:token) { create :access_token }
-  let(:response) { Doorkeeper::OAuth::TokenResponse.new token }
-
-  describe '#after_successful_response' do
-    it 'adds the ID token to the response' do
-      subject.send :after_successful_response
-
-      expect(response.id_token).to be_a Doorkeeper::OpenidConnect::IdToken
-      expect(response.id_token.nonce).to eq '123456'
-    end
-
-    it 'destroys the OpenID request record' do
-      grant.save!
-
-      expect do
-        subject.send :after_successful_response
-      end.to change { Doorkeeper::OpenidConnect::Request.count }.by(-1)
-    end
-
-    it 'skips the nonce if not present' do
-      grant.openid_request.nonce = nil
-      subject.send :after_successful_response
-
-      expect(response.id_token.nonce).to be_nil
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_request_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_request_spec.rb
deleted file mode 100644
index 3dd93cc42d2ed..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_request_spec.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OAuth::IdTokenRequest do
-  subject do
-    described_class.new(pre_auth, owner)
-  end
-
-  let :application do
-    FactoryBot.create(:application, scopes: 'public')
-  end
-
-  let :pre_auth do
-    server = Doorkeeper.configuration
-    allow(server).to receive(:grant_flows).and_return(['implicit_oidc'])
-
-    client = Doorkeeper::OAuth::Client.new(application)
-
-    attributes = {
-      client_id: client.uid,
-      response_type: 'id_token',
-      redirect_uri: 'https://app.com/callback',
-      scope: 'public',
-      nonce: '12345',
-    }
-
-    pre_auth = Doorkeeper::OAuth::PreAuthorization.new(server, attributes)
-    pre_auth.authorizable? # triggers loading of pre_auth.client
-    pre_auth
-  end
-
-  let(:owner) { build_stubbed(:user) }
-
-  # just to make sure self created pre_auth is authorizable
-  it 'pre_auth should be valid' do
-    expect(pre_auth).to be_authorizable
-  end
-
-  it 'creates an access token' do
-    expect do
-      subject.authorize
-    end.to change { Doorkeeper::AccessToken.count }.by(1)
-  end
-
-  it 'returns id_token response' do
-    expect(subject.authorize).to be_a(Doorkeeper::OAuth::IdTokenResponse)
-  end
-
-  context 'token reuse' do
-    it 'creates a new token if there are no matching tokens' do
-      allow(Doorkeeper.configuration).to receive(:reuse_access_token).and_return(true)
-      expect do
-        subject.authorize
-      end.to change { Doorkeeper::AccessToken.count }.by(1)
-    end
-
-    it 'creates a new token if scopes do not match' do
-      allow(Doorkeeper.configuration).to receive(:reuse_access_token).and_return(true)
-      create(:access_token, application_id: pre_auth.client.id,
-             resource_owner_id: owner.id, scopes: '')
-      expect do
-        subject.authorize
-      end.to change { Doorkeeper::AccessToken.count }.by(1)
-    end
-
-    it 'skips token creation if there is a matching one' do
-      allow(Doorkeeper.configuration).to receive(:reuse_access_token).and_return(true)
-      allow(application.scopes).to receive(:has_scopes?).and_return(true)
-      allow(application.scopes).to receive(:all?).and_return(true)
-
-      create(:access_token, application_id: pre_auth.client.id,
-             resource_owner_id: owner.id, scopes: 'public')
-
-      expect { subject.authorize }.not_to(change { Doorkeeper::AccessToken.count })
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_response_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_response_spec.rb
deleted file mode 100644
index 0381f921b2e24..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_response_spec.rb
+++ /dev/null
@@ -1,60 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OAuth::IdTokenResponse do
-  subject { described_class.new(pre_auth, auth, id_token) }
-
-  let(:token) { create :access_token }
-  let(:application) do
-    create(:application, scopes: 'public')
-  end
-
-  let(:pre_auth) do
-    double(
-      :pre_auth,
-      client: application,
-      redirect_uri: 'http://tst.com/cb',
-      state: 'state',
-      scopes: Doorkeeper::OAuth::Scopes.from_string('public'),
-      error: nil,
-      authorizable?: true,
-      nonce: '12345'
-    )
-  end
-
-  let(:owner) { build_stubbed(:user) }
-
-  let(:auth) do
-    Doorkeeper::OAuth::Authorization::Token.new(pre_auth, owner).tap do |c|
-      if c.respond_to?(:issue_token!)
-        c.issue_token!
-      else
-        c.issue_token
-      end
-    end
-  end
-  let(:id_token) { Doorkeeper::OpenidConnect::IdToken.new(token, pre_auth) }
-
-  describe '#body' do
-    it 'return body response for id_token' do
-      expect(subject.body).to eq({
-        expires_in: auth.token.expires_in_seconds,
-        state: pre_auth.state,
-        id_token: id_token.as_jws_token
-      })
-    end
-  end
-
-  describe '#redirect_uri' do
-    it 'includes expires_in, id_token and state' do
-      expect(subject.redirect_uri).to include("#{pre_auth.redirect_uri}#expires_in=#{auth.token.expires_in_seconds}&" \
-        "state=#{pre_auth.state}&" \
-        "id_token=#{id_token.as_jws_token}")
-    end
-
-    it 'does not include access_token' do
-      expect(subject.redirect_uri).not_to include('access_token')
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_token_request_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_token_request_spec.rb
deleted file mode 100644
index 760459531c3e0..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_token_request_spec.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OAuth::IdTokenTokenRequest do
-  subject do
-    described_class.new(pre_auth, owner)
-  end
-
-  let :application do
-    FactoryBot.create(:application, scopes: 'public')
-  end
-
-  let :pre_auth do
-    server = Doorkeeper.configuration
-    allow(server).to receive(:grant_flows).and_return(['implicit_oidc'])
-
-    client = Doorkeeper::OAuth::Client.new(application)
-
-    attributes = {
-      client_id: client.uid,
-      response_type: 'id_token token',
-      redirect_uri: 'https://app.com/callback',
-      scope: 'public',
-      nonce: '12345',
-    }
-
-    pre_auth = Doorkeeper::OAuth::PreAuthorization.new(server, attributes)
-    pre_auth.authorizable?
-    pre_auth
-  end
-
-  let(:owner) { build_stubbed(:user) }
-
-  # just to make sure self created pre_auth is authorizable
-  it 'pre_auth should be valid' do
-    expect(pre_auth).to be_authorizable
-  end
-
-  it 'creates an access token' do
-    expect do
-      subject.authorize
-    end.to change { Doorkeeper::AccessToken.count }.by(1)
-  end
-
-  it 'returns id_token token response' do
-    expect(subject.authorize).to be_a(Doorkeeper::OAuth::IdTokenTokenResponse)
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_token_response_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_token_response_spec.rb
deleted file mode 100644
index 56f7724e6f24a..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/id_token_token_response_spec.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OAuth::IdTokenTokenResponse do
-  subject { described_class.new(pre_auth, auth, id_token) }
-
-  let(:token) { create :access_token }
-  let(:application) do
-    create(:application, scopes: 'public')
-  end
-  let(:pre_auth) do
-    double(
-      :pre_auth,
-      client: application,
-      redirect_uri: 'http://tst.com/cb',
-      state: 'state',
-      scopes: Doorkeeper::OAuth::Scopes.from_string('public'),
-      error: nil,
-      authorizable?: true,
-      nonce: '12345'
-    )
-  end
-  let(:owner) { build_stubbed(:user) }
-  let(:auth) do
-    Doorkeeper::OAuth::Authorization::Token.new(pre_auth, owner).tap do |c|
-      if c.respond_to?(:issue_token!)
-        c.issue_token!
-      else
-        c.issue_token
-      end
-    end
-  end
-  let(:id_token) { Doorkeeper::OpenidConnect::IdToken.new(token, pre_auth) }
-
-  describe '#body' do
-    it 'return body response for id_token and access_token' do
-      expect(subject.body).to eq({
-        expires_in: auth.token.expires_in_seconds,
-        state: pre_auth.state,
-        id_token: id_token.as_jws_token,
-        access_token: auth.token.token,
-        token_type: auth.token.token_type
-      })
-    end
-  end
-
-  describe '#redirect_uri' do
-    it 'includes id_token, info of access_token and state' do
-      expect(subject.redirect_uri).to include("#{pre_auth.redirect_uri}#expires_in=#{auth.token.expires_in_seconds}&" \
-        "state=#{pre_auth.state}&" \
-        "id_token=#{id_token.as_jws_token}&" \
-        "access_token=#{auth.token.token}&token_type=#{auth.token.token_type}")
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/password_access_token_request_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/password_access_token_request_spec.rb
deleted file mode 100644
index 2c235e7523156..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/password_access_token_request_spec.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::OAuth::PasswordAccessTokenRequest do
-  if Gem.loaded_specs['doorkeeper'].version >= Gem::Version.create('5.5.1')
-    subject { Doorkeeper::OAuth::PasswordAccessTokenRequest.new server, client, credentials, resource_owner, { nonce: '123456' } }
-  else
-    subject { Doorkeeper::OAuth::PasswordAccessTokenRequest.new server, client, resource_owner, { nonce: '123456' } }
-  end
-
-  let(:server) { double }
-  let(:client) { double }
-  let(:credentials) { }
-  let(:resource_owner) { create :user }
-  let(:token) { create :access_token }
-  let(:response) { Doorkeeper::OAuth::TokenResponse.new token }
-
-  describe '#initialize' do
-    it 'stores the nonce attribute' do
-      expect(subject.nonce).to eq '123456'
-    end
-  end
-
-  describe '#after_successful_response' do
-    it 'adds the ID token to the response' do
-      subject.instance_variable_set '@response', response
-      subject.instance_variable_set '@access_token', token
-      subject.send :after_successful_response
-
-      expect(response.id_token).to be_a Doorkeeper::OpenidConnect::IdToken
-      expect(response.id_token.nonce).to eq '123456'
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/pre_authorization_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/pre_authorization_spec.rb
deleted file mode 100644
index c9807a4691243..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/pre_authorization_spec.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::OAuth::PreAuthorization do
-  subject { Doorkeeper::OAuth::PreAuthorization.new server, attrs }
-
-  let(:server) { Doorkeeper.configuration }
-  let(:attrs) {}
-
-  describe '#initialize' do
-    context 'with nonce parameter' do
-      let(:attrs) { { nonce: '123456' } }
-
-      it 'stores the nonce attribute' do
-        expect(subject.nonce).to eq '123456'
-      end
-    end
-  end
-
-  describe '#error_response' do
-    context 'with response_type = code' do
-      let(:attrs) { { response_type: 'code', redirect_uri: 'client.com/callback' } }
-
-      it 'redirects to redirect_uri with query parameter' do
-        expect(subject.error_response.redirect_uri).to match(/#{attrs[:redirect_uri]}\?/)
-      end
-    end
-
-    context 'with response_type = token' do
-      let(:attrs) { { response_type: 'token', redirect_uri: 'client.com/callback' } }
-
-      it 'redirects to redirect_uri with fragment' do
-        expect(subject.error_response.redirect_uri).to match(/#{attrs[:redirect_uri]}#/)
-      end
-    end
-
-    context 'with response_type = id_token' do
-      let(:attrs) { { response_type: 'id_token', redirect_uri: 'client.com/callback' } }
-
-      it 'redirects to redirect_uri with fragment' do
-        expect(subject.error_response.redirect_uri).to match(/#{attrs[:redirect_uri]}#/)
-      end
-    end
-
-    context 'with response_type = id_token token' do
-      let(:attrs) { { response_type: 'id_token token', redirect_uri: 'client.com/callback' } }
-
-      it 'redirects to redirect_uri with fragment' do
-        expect(subject.error_response.redirect_uri).to match(/#{attrs[:redirect_uri]}#/)
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/token_response_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/token_response_spec.rb
deleted file mode 100644
index 3fb85a2ea718f..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/oauth/token_response_spec.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::OAuth::TokenResponse do
-  subject { Doorkeeper::OAuth::TokenResponse.new token }
-
-  let(:token) { create :access_token }
-  let(:client) { Doorkeeper::OAuth::Client.new create(:application) }
-  let(:pre_auth) { Doorkeeper::OAuth::PreAuthorization.new(Doorkeeper.configuration, client_id: client.uid, nonce: '123456') }
-  let(:id_token) { Doorkeeper::OpenidConnect::IdToken.new token, pre_auth }
-
-  before do
-    pre_auth.valid? # triggers loading of pre_auth.client
-  end
-
-  describe '#body' do
-    before do
-      subject.id_token = id_token
-    end
-
-    context 'with the openid scope present' do
-      before do
-        token.scopes = 'openid email'
-      end
-
-      it 'adds the ID token to the response' do
-        expect(subject.body[:id_token]).to eq id_token.as_jws_token
-      end
-    end
-
-    context 'with the openid scope present but no id_token' do
-      before do
-        token.scopes = 'openid email'
-        subject.id_token = nil
-      end
-
-      it 'adds the ID token to the response' do
-        expect(subject.body[:id_token]).to be_truthy
-      end
-    end
-
-    context 'with the openid scope not present' do
-      before do
-        token.scopes = 'email'
-      end
-
-      it 'does not add the ID token to the response' do
-        expect(subject.body).not_to include :id_token
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/openid_connect_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/openid_connect_spec.rb
deleted file mode 100644
index 31a03afb663b0..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/openid_connect_spec.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect do
-  describe '.signing_algorithm' do
-    it 'returns the signing_algorithm as an uppercase symbol' do
-      expect(subject.signing_algorithm).to eq :RS256
-    end
-  end
-
-  describe '.signing_key' do
-    it 'returns the private key as JWK instance' do
-      expect(subject.signing_key).to be_a ::JWT::JWK::KeyBase
-      expect(subject.signing_key.kid).to eq 'IqYwZo2cE6hsyhs48cU8QHH4GanKIx0S4Dc99kgTIMA'
-    end
-  end
-
-  describe '.signing_key_normalized' do
-    context 'when signing key is RSA' do
-      it 'returns the RSA public key parameters' do
-        expect(subject.signing_key_normalized).to eq(
-          :kty => 'RSA',
-          :kid => 'IqYwZo2cE6hsyhs48cU8QHH4GanKIx0S4Dc99kgTIMA',
-          :e => 'AQAB',
-          :n => 'sjdnSA6UWUQQHf6BLIkIEUhMRNBJC1NN_pFt1EJmEiI88GS0ceROO5B5Ooo9Y3QOWJ_n-u1uwTHBz0HCTN4wgArWd1TcqB5GQzQRP4eYnWyPfi4CfeqAHzQp-v4VwbcK0LW4FqtW5D0dtrFtI281FDxLhARzkhU2y7fuYhL8fVw5rUhE8uwvHRZ5CEZyxf7BSHxIvOZAAymhuzNLATt2DGkDInU1BmF75tEtBJAVLzWG_j4LPZh1EpSdfezqaXQlcy9PJi916UzTl0P7Yy-ulOdUsMlB6yo8qKTY1-AbZ5jzneHbGDU_O8QjYvii1WDmJ60t0jXicmOkGrOhruOptw'
-        )
-      end
-    end
-
-    context 'when signing key is EC' do
-      before { configure_ec }
-
-      it 'returns the EC public key parameters' do
-        expect(subject.signing_key_normalized).to eq(
-          :kty => 'EC',
-          :kid => 'dOx_AhaepicN2r2M-sxZhgkYZMCX7dYhPsNOw1ZiFnI',
-          :crv => 'P-521',
-          :x => 'AeYVvbl3zZcFCdE-0msqOowYODjzeXAhjsZKhdNjGlDREvko3UFOw6S43g-s8bvVBmBz3fCodEzFRYQqJVI4UFvF',
-          :y => 'AYJ7GYeBm_Fb6liN53xGASdbRSzF34h4BDSVYzjtQc7I-1LK17fwwS3VfQCJwaT6zX33HTrhR4VoUEUJHKwR3dNs'
-        )
-      end
-    end
-
-    context 'when signing key is HMAC' do
-      before { configure_hmac }
-
-      it 'returns the HMAC public key parameters' do
-        expect(subject.signing_key_normalized).to eq(
-          :kty => 'oct',
-          :kid => 'lyAW7LdxryFWQtLdgxZpOrI87APHrzJKgWLT0BkWVog'
-        )
-      end
-    end
-  end
-
-  describe 'registering grant flows' do
-    describe Doorkeeper::Request do
-      it 'uses the correct strategy for "id_token" response types' do
-        expect(described_class.authorization_strategy('id_token')).to eq(Doorkeeper::Request::IdToken)
-      end
-
-      it 'uses the correct strategy for "id_token token" response types' do
-        expect(described_class.authorization_strategy('id_token token')).to eq(Doorkeeper::Request::IdTokenToken)
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/routes_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/routes_spec.rb
deleted file mode 100644
index 2f7c8b510a865..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/routes_spec.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::Rails::Routes, type: :routing do
-  describe 'userinfo' do
-    it 'maps GET #show' do
-      expect(get: 'oauth/userinfo').to route_to(
-        controller: 'doorkeeper/openid_connect/userinfo',
-        action: 'show'
-      )
-    end
-
-    it 'maps POST #show' do
-      expect(post: 'oauth/userinfo').to route_to(
-        controller: 'doorkeeper/openid_connect/userinfo',
-        action: 'show'
-      )
-    end
-  end
-
-  describe 'discovery' do
-    it 'maps GET #provider' do
-      expect(get: '.well-known/openid-configuration').to route_to(
-        controller: 'doorkeeper/openid_connect/discovery',
-        action: 'provider'
-      )
-    end
-
-    it 'maps GET #webfinger' do
-      expect(get: '.well-known/webfinger').to route_to(
-        controller: 'doorkeeper/openid_connect/discovery',
-        action: 'webfinger'
-      )
-    end
-
-    it 'maps GET #keys' do
-      expect(get: 'oauth/discovery/keys').to route_to(
-        controller: 'doorkeeper/openid_connect/discovery',
-        action: 'keys'
-      )
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/lib/user_info_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/lib/user_info_spec.rb
deleted file mode 100644
index cf866b42d6188..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/lib/user_info_spec.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::UserInfo do
-  subject { described_class.new token }
-
-  let(:user) { create :user, name: 'Joe' }
-  let(:token) { create :access_token, resource_owner_id: user.id, scopes: scopes }
-  let(:scopes) { 'openid' }
-
-  describe '#claims' do
-    it 'returns all accessible claims' do
-      expect(subject.claims).to eq({
-        sub: user.id.to_s,
-        created_at: user.created_at.to_i,
-        variable_name: 'openid-name',
-        token_id: token.id,
-        both_responses: 'both',
-        user_info_response: 'user_info',
-      })
-    end
-
-    context 'with a grant for the profile scopes' do
-      let(:scopes) { 'openid profile' }
-
-      it 'returns additional profile claims' do
-        expect(subject.claims).to eq({
-          sub: user.id.to_s,
-          name: 'Joe',
-          created_at: user.created_at.to_i,
-          updated_at: user.updated_at.to_i,
-          variable_name: 'profile-name',
-          token_id: token.id,
-          both_responses: 'both',
-          user_info_response: 'user_info',
-        })
-      end
-    end
-  end
-
-  describe '#as_json' do
-    it 'returns claims with nil values and empty strings removed' do
-      allow(subject).to receive(:claims).and_return({
-        nil: nil,
-        empty: '',
-        blank: ' ',
-      })
-
-      expect(subject.as_json).to eq({
-        blank: ' '
-      })
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/models/access_grant_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/models/access_grant_spec.rb
deleted file mode 100644
index 43e9ef8db6bb7..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/models/access_grant_spec.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::AccessGrant do
-  subject { Doorkeeper::AccessGrant.new }
-
-  it 'has one openid_request' do
-    association = subject.class.reflect_on_association :openid_request
-
-    expect(association.options).to eq({
-      class_name: 'Doorkeeper::OpenidConnect::Request',
-      inverse_of: :access_grant,
-      foreign_key: "access_grant_id",
-      dependent: :delete,
-    })
-  end
-
-  it 'extends the base doorkeeper AccessGrant' do
-    expect(subject).to respond_to(:"openid_request=")
-  end
-
-  describe '#delete' do
-    it 'cascades to oauth_openid_requests' do
-      if Rails::VERSION::MAJOR >= 6
-        access_grant = create(:access_grant, application: create(:application))
-        create(:openid_request, access_grant: access_grant)
-
-        expect { access_grant.delete }
-          .to(change { Doorkeeper::OpenidConnect::Request.count }.by(-1))
-      else
-        skip <<-MSG.strip
-          Needs Rails 6 for foreign key support with sqlite3:
-          https://blog.bigbinary.com/2019/09/24/rails-6-adds-add_foreign_key-and-remove_foreign_key-for-sqlite3.html
-        MSG
-      end
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/models/request_spec.rb b/vendor/gems/doorkeeper-openid_connect/spec/models/request_spec.rb
deleted file mode 100644
index 4126fbd012335..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/models/request_spec.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe Doorkeeper::OpenidConnect::Request do
-  describe 'validations' do
-    it 'requires an access grant' do
-      subject.access_grant_id = nil
-
-      expect(subject).not_to be_valid
-      expect(subject.errors).to include :access_grant_id
-    end
-
-    it 'requires a nonce' do
-      subject.nonce = nil
-
-      expect(subject).not_to be_valid
-      expect(subject.errors).to include :nonce
-    end
-  end
-
-  describe 'associations' do
-    it 'belongs to an access_grant' do
-      association = subject.class.reflect_on_association :access_grant
-
-      expect(association.options).to eq({
-        class_name: 'Doorkeeper::AccessGrant',
-        inverse_of: :openid_request,
-      })
-    end
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/rails_helper.rb b/vendor/gems/doorkeeper-openid_connect/spec/rails_helper.rb
deleted file mode 100644
index 79b9c48543b37..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/rails_helper.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-# frozen_string_literal: true
-
-# This file is copied to spec/ when you run 'rails generate rspec:install'
-ENV['RAILS_ENV'] ||= 'test'
-require 'dummy/config/environment'
-# Prevent database truncation if the environment is production
-abort('The Rails environment is running in production mode!') if Rails.env.production?
-require 'spec_helper'
-require 'rspec/rails'
-# Add additional requires below this line. Rails is not loaded until this point!
-
-# Requires supporting ruby files with custom matchers and macros, etc, in
-# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
-# run as spec files by default. This means that files in spec/support that end
-# in _spec.rb will both be required and run as specs, causing the specs to be
-# run twice. It is recommended that you do not name files matching this glob to
-# end with _spec.rb. You can configure this pattern with the --pattern
-# option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
-#
-# The following line is provided for convenience purposes. It has the downside
-# of increasing the boot-up time by auto-requiring all files in the support
-# directory. Alternatively, in the individual `*_spec.rb` files, manually
-# require only the support files necessary.
-#
-# Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
-
-# Checks for pending migration and applies them before tests are run.
-# If you are not using ActiveRecord, you can remove this line.
-Dir.chdir('spec/dummy') do
-  ActiveRecord::Migration.maintain_test_schema!
-end
-
-require_relative 'support/doorkeeper_configuration.rb'
-
-require 'factory_bot'
-FactoryBot.find_definitions
-
-RSpec.configure do |config|
-  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
-  config.fixture_path = "#{::Rails.root}/spec/fixtures"
-
-  # If you're not using ActiveRecord, or you'd prefer not to run each of your
-  # examples within a transaction, remove the following line or assign false
-  # instead of true.
-  config.use_transactional_fixtures = true
-
-  # Filter lines from Rails gems in backtraces.
-  config.filter_rails_from_backtrace!
-  # arbitrary gems may also be filtered via:
-  # config.filter_gems_from_backtrace("gem name")
-
-  config.include FactoryBot::Syntax::Methods
-
-  # Reinitialize configuration after each example
-  config.after do
-    load Rails.root.join('config/initializers/doorkeeper.rb')
-    load Rails.root.join('config/initializers/doorkeeper_openid_connect.rb')
-  end
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/spec_helper.rb b/vendor/gems/doorkeeper-openid_connect/spec/spec_helper.rb
deleted file mode 100644
index b0b2a54d4b002..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/spec_helper.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-# frozen_string_literal: true
-
-require 'pry-byebug'
-
-puts "====> Doorkeeper version: #{Doorkeeper::VERSION::STRING}"
-
-RSpec.configure do |config|
-  # rspec-expectations config goes here. You can use an alternate
-  # assertion/expectation library such as wrong or the stdlib/minitest
-  # assertions if you prefer.
-  config.expect_with :rspec do |expectations|
-    # This option will default to `true` in RSpec 4. It makes the `description`
-    # and `failure_message` of custom matchers include text for helper methods
-    # defined using `chain`, e.g.:
-    #     be_bigger_than(2).and_smaller_than(4).description
-    #     # => "be bigger than 2 and smaller than 4"
-    # ...rather than:
-    #     # => "be bigger than 2"
-    expectations.include_chain_clauses_in_custom_matcher_descriptions = true
-  end
-
-  # rspec-mocks config goes here. You can use an alternate test double
-  # library (such as bogus or mocha) by changing the `mock_with` option here.
-  config.mock_with :rspec do |mocks|
-    # Prevents you from mocking or stubbing a method that does not exist on
-    # a real object. This is generally recommended, and will default to
-    # `true` in RSpec 4.
-    mocks.verify_partial_doubles = true
-  end
-
-  # This option will default to `:apply_to_host_groups` in RSpec 4 (and will
-  # have no way to turn it off -- the option exists only for backwards
-  # compatibility in RSpec 3). It causes shared context metadata to be
-  # inherited by the metadata hash of host groups and examples, rather than
-  # triggering implicit auto-inclusion in groups with matching metadata.
-  config.shared_context_metadata_behavior = :apply_to_host_groups
-
-  # The settings below are suggested to provide a good initial experience
-  # with RSpec, but feel free to customize to your heart's content.
-  # This allows you to limit a spec run to individual examples or groups
-  # you care about by tagging them with `:focus` metadata. When nothing
-  # is tagged with `:focus`, all examples get run. RSpec also provides
-  # aliases for `it`, `describe`, and `context` that include `:focus`
-  # metadata: `fit`, `fdescribe` and `fcontext`, respectively.
-  config.filter_run_when_matching :focus
-
-  # Allows RSpec to persist some state between runs in order to support
-  # the `--only-failures` and `--next-failure` CLI options. We recommend
-  # you configure your source control system to ignore this file.
-  config.example_status_persistence_file_path = 'spec/examples.txt'
-
-  # Limits the available syntax to the non-monkey patched syntax that is
-  # recommended. For more details, see:
-  #   - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
-  #   - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
-  #   - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
-  # config.disable_monkey_patching!
-
-  # Many RSpec users commonly either run the entire suite or an individual
-  # file, and it's useful to allow more verbose output when running an
-  # individual spec file.
-  if config.files_to_run.one?
-    # Use the documentation formatter for detailed output,
-    # unless a formatter has already been configured
-    # (e.g. via a command-line flag).
-    config.default_formatter = 'doc'
-  end
-
-  # Print the 10 slowest examples and example groups at the
-  # end of the spec run, to help surface which specs are running
-  # particularly slow.
-  # config.profile_examples = 10
-
-  # Run specs in random order to surface order dependencies. If you find an
-  # order dependency and want to debug it, you can fix the order by providing
-  # the seed, which is printed after each run.
-  #     --seed 1234
-  config.order = :random
-
-  # Seed global randomization in this process using the `--seed` CLI option.
-  # Setting this allows you to use `--seed` to deterministically reproduce
-  # test failures related to randomization by passing the same `--seed` value
-  # as the one that triggered the failure.
-  Kernel.srand config.seed
-end
diff --git a/vendor/gems/doorkeeper-openid_connect/spec/support/doorkeeper_configuration.rb b/vendor/gems/doorkeeper-openid_connect/spec/support/doorkeeper_configuration.rb
deleted file mode 100644
index 5198a0b351443..0000000000000
--- a/vendor/gems/doorkeeper-openid_connect/spec/support/doorkeeper_configuration.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-# frozen_string_literal: true
-
-module DoorkeeperConfiguration
-  def configure_doorkeeper(signing_key, signing_algorithm)
-    Doorkeeper::OpenidConnect.configure do
-      signing_key signing_key
-
-      signing_algorithm signing_algorithm
-
-      resource_owner_from_access_token do |access_token|
-        User.find_by(id: access_token.resource_owner_id)
-      end
-
-      auth_time_from_resource_owner do |resource_owner|
-        resource_owner.current_sign_in_at
-      end
-
-      subject do |resource_owner|
-        resource_owner.id
-      end
-    end
-  end
-
-  def configure_ec
-    signing_key = <<~EOL
-      -----BEGIN EC PRIVATE KEY-----
-      MIHbAgEBBEF9VcxGjPKczrJlE1N3oEpZsauQfDXIjLeini7h4/3+DOKw2VWE4lCU
-      rNJJL65EHT+2TriRg2xSb0l0rK/MAFAFraAHBgUrgQQAI6GBiQOBhgAEAeYVvbl3
-      zZcFCdE+0msqOowYODjzeXAhjsZKhdNjGlDREvko3UFOw6S43g+s8bvVBmBz3fCo
-      dEzFRYQqJVI4UFvFAYJ7GYeBm/Fb6liN53xGASdbRSzF34h4BDSVYzjtQc7I+1LK
-      17fwwS3VfQCJwaT6zX33HTrhR4VoUEUJHKwR3dNs
-      -----END EC PRIVATE KEY-----
-    EOL
-    configure_doorkeeper(signing_key, :ES512)
-  end
-
-  def configure_hmac
-    configure_doorkeeper('the_greatest_secret_key', :HS512)
-  end
-end
-
-RSpec.configure { |config| config.include DoorkeeperConfiguration }
-- 
GitLab