doorkeeper 4.4.0 → 5.6.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/{NEWS.md → CHANGELOG.md} +471 -16
- data/README.md +108 -403
- data/app/assets/stylesheets/doorkeeper/admin/application.css +2 -2
- data/app/controllers/doorkeeper/application_controller.rb +8 -5
- data/app/controllers/doorkeeper/application_metal_controller.rb +7 -11
- data/app/controllers/doorkeeper/applications_controller.rb +62 -27
- data/app/controllers/doorkeeper/authorizations_controller.rb +112 -18
- data/app/controllers/doorkeeper/authorized_applications_controller.rb +22 -3
- data/app/controllers/doorkeeper/token_info_controller.rb +16 -4
- data/app/controllers/doorkeeper/tokens_controller.rb +104 -35
- data/app/helpers/doorkeeper/dashboard_helper.rb +9 -7
- data/app/views/doorkeeper/applications/_delete_form.html.erb +3 -1
- data/app/views/doorkeeper/applications/_form.html.erb +27 -26
- data/app/views/doorkeeper/applications/edit.html.erb +1 -1
- data/app/views/doorkeeper/applications/index.html.erb +17 -7
- data/app/views/doorkeeper/applications/new.html.erb +1 -1
- data/app/views/doorkeeper/applications/show.html.erb +38 -17
- data/app/views/doorkeeper/authorizations/error.html.erb +4 -2
- data/app/views/doorkeeper/authorizations/form_post.html.erb +15 -0
- data/app/views/doorkeeper/authorizations/new.html.erb +16 -10
- data/app/views/layouts/doorkeeper/admin.html.erb +16 -14
- data/config/locales/en.yml +28 -5
- data/lib/doorkeeper/config/abstract_builder.rb +28 -0
- data/lib/doorkeeper/config/option.rb +82 -0
- data/lib/doorkeeper/config/validations.rb +53 -0
- data/lib/doorkeeper/config.rb +477 -142
- data/lib/doorkeeper/engine.rb +17 -4
- data/lib/doorkeeper/errors.rb +25 -16
- data/lib/doorkeeper/grant_flow/fallback_flow.rb +15 -0
- data/lib/doorkeeper/grant_flow/flow.rb +44 -0
- data/lib/doorkeeper/grant_flow/registry.rb +50 -0
- data/lib/doorkeeper/grant_flow.rb +45 -0
- data/lib/doorkeeper/grape/authorization_decorator.rb +6 -4
- data/lib/doorkeeper/grape/helpers.rb +13 -7
- data/lib/doorkeeper/helpers/controller.rb +43 -10
- data/lib/doorkeeper/models/access_grant_mixin.rb +97 -3
- data/lib/doorkeeper/models/access_token_mixin.rb +273 -67
- data/lib/doorkeeper/models/application_mixin.rb +50 -5
- data/lib/doorkeeper/models/concerns/accessible.rb +2 -0
- data/lib/doorkeeper/models/concerns/expirable.rb +7 -3
- data/lib/doorkeeper/models/concerns/expiration_time_sql_math.rb +88 -0
- data/lib/doorkeeper/models/concerns/orderable.rb +2 -0
- data/lib/doorkeeper/models/concerns/ownership.rb +4 -7
- data/lib/doorkeeper/models/concerns/polymorphic_resource_owner.rb +30 -0
- data/lib/doorkeeper/models/concerns/resource_ownerable.rb +47 -0
- data/lib/doorkeeper/models/concerns/reusable.rb +19 -0
- data/lib/doorkeeper/models/concerns/revocable.rb +3 -27
- data/lib/doorkeeper/models/concerns/scopes.rb +12 -2
- data/lib/doorkeeper/models/concerns/secret_storable.rb +106 -0
- data/lib/doorkeeper/oauth/authorization/code.rb +54 -12
- data/lib/doorkeeper/oauth/authorization/context.rb +17 -0
- data/lib/doorkeeper/oauth/authorization/token.rb +64 -24
- data/lib/doorkeeper/oauth/authorization/uri_builder.rb +7 -5
- data/lib/doorkeeper/oauth/authorization_code_request.rb +69 -11
- data/lib/doorkeeper/oauth/base_request.rb +36 -24
- data/lib/doorkeeper/oauth/base_response.rb +2 -0
- data/lib/doorkeeper/oauth/client/credentials.rb +5 -5
- data/lib/doorkeeper/oauth/client.rb +10 -11
- data/lib/doorkeeper/oauth/client_credentials/creator.rb +44 -4
- data/lib/doorkeeper/oauth/client_credentials/issuer.rb +16 -9
- data/lib/doorkeeper/oauth/client_credentials/validator.rb +55 -0
- data/lib/doorkeeper/oauth/client_credentials_request.rb +10 -11
- data/lib/doorkeeper/oauth/code_request.rb +8 -12
- data/lib/doorkeeper/oauth/code_response.rb +27 -15
- data/lib/doorkeeper/oauth/error.rb +3 -1
- data/lib/doorkeeper/oauth/error_response.rb +34 -14
- data/lib/doorkeeper/oauth/forbidden_token_response.rb +11 -3
- data/lib/doorkeeper/oauth/helpers/scope_checker.rb +23 -18
- data/lib/doorkeeper/oauth/helpers/unique_token.rb +20 -3
- data/lib/doorkeeper/oauth/helpers/uri_checker.rb +42 -6
- data/lib/doorkeeper/oauth/hooks/context.rb +21 -0
- data/lib/doorkeeper/oauth/invalid_request_response.rb +43 -0
- data/lib/doorkeeper/oauth/invalid_token_response.rb +29 -4
- data/lib/doorkeeper/oauth/nonstandard.rb +39 -0
- data/lib/doorkeeper/oauth/password_access_token_request.rb +43 -10
- data/lib/doorkeeper/oauth/pre_authorization.rb +136 -26
- data/lib/doorkeeper/oauth/refresh_token_request.rb +67 -31
- data/lib/doorkeeper/oauth/scopes.rb +8 -4
- data/lib/doorkeeper/oauth/token.rb +12 -8
- data/lib/doorkeeper/oauth/token_introspection.rb +99 -25
- data/lib/doorkeeper/oauth/token_request.rb +8 -20
- data/lib/doorkeeper/oauth/token_response.rb +13 -10
- data/lib/doorkeeper/oauth.rb +13 -0
- data/lib/doorkeeper/orm/active_record/access_grant.rb +5 -30
- data/lib/doorkeeper/orm/active_record/access_token.rb +5 -43
- data/lib/doorkeeper/orm/active_record/application.rb +6 -57
- data/lib/doorkeeper/orm/active_record/mixins/access_grant.rb +63 -0
- data/lib/doorkeeper/orm/active_record/mixins/access_token.rb +77 -0
- data/lib/doorkeeper/orm/active_record/mixins/application.rb +210 -0
- data/lib/doorkeeper/orm/active_record/redirect_uri_validator.rb +66 -0
- data/lib/doorkeeper/orm/active_record/stale_records_cleaner.rb +36 -0
- data/lib/doorkeeper/orm/active_record.rb +31 -20
- data/lib/doorkeeper/rails/helpers.rb +10 -8
- data/lib/doorkeeper/rails/routes/abstract_router.rb +35 -0
- data/lib/doorkeeper/rails/routes/mapper.rb +4 -2
- data/lib/doorkeeper/rails/routes/mapping.rb +9 -7
- data/lib/doorkeeper/rails/routes/registry.rb +45 -0
- data/lib/doorkeeper/rails/routes.rb +45 -25
- data/lib/doorkeeper/rake/db.rake +40 -0
- data/lib/doorkeeper/rake/setup.rake +6 -0
- data/lib/doorkeeper/rake.rb +14 -0
- data/lib/doorkeeper/request/authorization_code.rb +6 -4
- data/lib/doorkeeper/request/client_credentials.rb +3 -3
- data/lib/doorkeeper/request/code.rb +1 -1
- data/lib/doorkeeper/request/password.rb +4 -3
- data/lib/doorkeeper/request/refresh_token.rb +6 -5
- data/lib/doorkeeper/request/strategy.rb +4 -2
- data/lib/doorkeeper/request/token.rb +1 -1
- data/lib/doorkeeper/request.rb +61 -34
- data/lib/doorkeeper/secret_storing/base.rb +64 -0
- data/lib/doorkeeper/secret_storing/bcrypt.rb +60 -0
- data/lib/doorkeeper/secret_storing/plain.rb +33 -0
- data/lib/doorkeeper/secret_storing/sha256_hash.rb +26 -0
- data/lib/doorkeeper/server.rb +9 -11
- data/lib/doorkeeper/stale_records_cleaner.rb +24 -0
- data/lib/doorkeeper/validations.rb +2 -0
- data/lib/doorkeeper/version.rb +7 -29
- data/lib/doorkeeper.rb +180 -65
- data/lib/generators/doorkeeper/application_owner_generator.rb +24 -18
- data/lib/generators/doorkeeper/confidential_applications_generator.rb +33 -0
- data/lib/generators/doorkeeper/enable_polymorphic_resource_owner_generator.rb +39 -0
- data/lib/generators/doorkeeper/install_generator.rb +19 -9
- data/lib/generators/doorkeeper/migration_generator.rb +23 -18
- data/lib/generators/doorkeeper/pkce_generator.rb +33 -0
- data/lib/generators/doorkeeper/previous_refresh_token_generator.rb +28 -22
- data/{spec/dummy/db/migrate/20180210183654_add_confidential_to_application.rb → lib/generators/doorkeeper/templates/add_confidential_to_applications.rb.erb} +2 -2
- data/lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb.erb +3 -1
- data/lib/generators/doorkeeper/templates/add_previous_refresh_token_to_access_tokens.rb.erb +2 -0
- data/lib/generators/doorkeeper/templates/enable_pkce_migration.rb.erb +8 -0
- data/lib/generators/doorkeeper/templates/enable_polymorphic_resource_owner_migration.rb.erb +17 -0
- data/lib/generators/doorkeeper/templates/initializer.rb +402 -32
- data/lib/generators/doorkeeper/templates/migration.rb.erb +47 -18
- data/lib/generators/doorkeeper/views_generator.rb +8 -4
- data/vendor/assets/stylesheets/doorkeeper/bootstrap.min.css +4 -5
- metadata +97 -309
- data/.coveralls.yml +0 -1
- data/.github/ISSUE_TEMPLATE.md +0 -25
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -17
- data/.gitignore +0 -19
- data/.hound.yml +0 -2
- data/.rspec +0 -1
- data/.rubocop.yml +0 -17
- data/.travis.yml +0 -38
- data/Appraisals +0 -18
- data/CODE_OF_CONDUCT.md +0 -46
- data/CONTRIBUTING.md +0 -47
- data/Gemfile +0 -10
- data/RELEASING.md +0 -10
- data/Rakefile +0 -20
- data/SECURITY.md +0 -15
- data/app/validators/redirect_uri_validator.rb +0 -44
- data/doorkeeper.gemspec +0 -32
- data/gemfiles/rails_4_2.gemfile +0 -13
- data/gemfiles/rails_5_0.gemfile +0 -12
- data/gemfiles/rails_5_1.gemfile +0 -12
- data/gemfiles/rails_5_2.gemfile +0 -12
- data/gemfiles/rails_master.gemfile +0 -14
- data/lib/doorkeeper/oauth/client_credentials/validation.rb +0 -45
- data/lib/generators/doorkeeper/add_client_confidentiality_generator.rb +0 -31
- data/lib/generators/doorkeeper/templates/add_confidential_to_application_migration.rb.erb +0 -11
- data/spec/controllers/application_metal_controller.rb +0 -10
- data/spec/controllers/applications_controller_spec.rb +0 -69
- data/spec/controllers/authorizations_controller_spec.rb +0 -218
- data/spec/controllers/protected_resources_controller_spec.rb +0 -309
- data/spec/controllers/token_info_controller_spec.rb +0 -56
- data/spec/controllers/tokens_controller_spec.rb +0 -274
- data/spec/dummy/Rakefile +0 -7
- data/spec/dummy/app/controllers/application_controller.rb +0 -3
- data/spec/dummy/app/controllers/custom_authorizations_controller.rb +0 -7
- data/spec/dummy/app/controllers/full_protected_resources_controller.rb +0 -12
- data/spec/dummy/app/controllers/home_controller.rb +0 -17
- data/spec/dummy/app/controllers/metal_controller.rb +0 -11
- data/spec/dummy/app/controllers/semi_protected_resources_controller.rb +0 -11
- data/spec/dummy/app/helpers/application_helper.rb +0 -5
- data/spec/dummy/app/models/user.rb +0 -5
- data/spec/dummy/app/views/home/index.html.erb +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +0 -14
- data/spec/dummy/config/application.rb +0 -23
- data/spec/dummy/config/boot.rb +0 -9
- data/spec/dummy/config/database.yml +0 -15
- data/spec/dummy/config/environment.rb +0 -5
- data/spec/dummy/config/environments/development.rb +0 -29
- data/spec/dummy/config/environments/production.rb +0 -62
- data/spec/dummy/config/environments/test.rb +0 -44
- data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/dummy/config/initializers/doorkeeper.rb +0 -107
- data/spec/dummy/config/initializers/new_framework_defaults.rb +0 -6
- data/spec/dummy/config/initializers/secret_token.rb +0 -8
- data/spec/dummy/config/initializers/session_store.rb +0 -8
- data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/spec/dummy/config/locales/doorkeeper.en.yml +0 -5
- data/spec/dummy/config/routes.rb +0 -52
- data/spec/dummy/config.ru +0 -4
- data/spec/dummy/db/migrate/20111122132257_create_users.rb +0 -11
- data/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb +0 -7
- data/spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb +0 -62
- data/spec/dummy/db/migrate/20151223200000_add_owner_to_application.rb +0 -9
- data/spec/dummy/db/migrate/20160320211015_add_previous_refresh_token_to_access_tokens.rb +0 -13
- data/spec/dummy/db/schema.rb +0 -68
- data/spec/dummy/public/404.html +0 -26
- data/spec/dummy/public/422.html +0 -26
- data/spec/dummy/public/500.html +0 -26
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +0 -6
- data/spec/factories.rb +0 -28
- data/spec/generators/application_owner_generator_spec.rb +0 -41
- data/spec/generators/install_generator_spec.rb +0 -31
- data/spec/generators/migration_generator_spec.rb +0 -41
- data/spec/generators/previous_refresh_token_generator_spec.rb +0 -57
- data/spec/generators/templates/routes.rb +0 -3
- data/spec/generators/views_generator_spec.rb +0 -27
- data/spec/grape/grape_integration_spec.rb +0 -135
- data/spec/helpers/doorkeeper/dashboard_helper_spec.rb +0 -24
- data/spec/lib/config_spec.rb +0 -437
- data/spec/lib/doorkeeper_spec.rb +0 -150
- data/spec/lib/models/expirable_spec.rb +0 -50
- data/spec/lib/models/revocable_spec.rb +0 -59
- data/spec/lib/models/scopes_spec.rb +0 -43
- data/spec/lib/oauth/authorization/uri_builder_spec.rb +0 -41
- data/spec/lib/oauth/authorization_code_request_spec.rb +0 -108
- data/spec/lib/oauth/base_request_spec.rb +0 -155
- data/spec/lib/oauth/base_response_spec.rb +0 -45
- data/spec/lib/oauth/client/credentials_spec.rb +0 -90
- data/spec/lib/oauth/client_credentials/creator_spec.rb +0 -44
- data/spec/lib/oauth/client_credentials/issuer_spec.rb +0 -86
- data/spec/lib/oauth/client_credentials/validation_spec.rb +0 -54
- data/spec/lib/oauth/client_credentials_integration_spec.rb +0 -27
- data/spec/lib/oauth/client_credentials_request_spec.rb +0 -105
- data/spec/lib/oauth/client_spec.rb +0 -39
- data/spec/lib/oauth/code_request_spec.rb +0 -43
- data/spec/lib/oauth/code_response_spec.rb +0 -34
- data/spec/lib/oauth/error_response_spec.rb +0 -61
- data/spec/lib/oauth/error_spec.rb +0 -23
- data/spec/lib/oauth/forbidden_token_response_spec.rb +0 -23
- data/spec/lib/oauth/helpers/scope_checker_spec.rb +0 -64
- data/spec/lib/oauth/helpers/unique_token_spec.rb +0 -20
- data/spec/lib/oauth/helpers/uri_checker_spec.rb +0 -213
- data/spec/lib/oauth/invalid_token_response_spec.rb +0 -56
- data/spec/lib/oauth/password_access_token_request_spec.rb +0 -96
- data/spec/lib/oauth/pre_authorization_spec.rb +0 -155
- data/spec/lib/oauth/refresh_token_request_spec.rb +0 -166
- data/spec/lib/oauth/scopes_spec.rb +0 -149
- data/spec/lib/oauth/token_request_spec.rb +0 -96
- data/spec/lib/oauth/token_response_spec.rb +0 -85
- data/spec/lib/oauth/token_spec.rb +0 -116
- data/spec/lib/request/strategy_spec.rb +0 -53
- data/spec/lib/server_spec.rb +0 -59
- data/spec/models/doorkeeper/access_grant_spec.rb +0 -36
- data/spec/models/doorkeeper/access_token_spec.rb +0 -418
- data/spec/models/doorkeeper/application_spec.rb +0 -286
- data/spec/requests/applications/applications_request_spec.rb +0 -94
- data/spec/requests/applications/authorized_applications_spec.rb +0 -30
- data/spec/requests/endpoints/authorization_spec.rb +0 -71
- data/spec/requests/endpoints/token_spec.rb +0 -71
- data/spec/requests/flows/authorization_code_errors_spec.rb +0 -76
- data/spec/requests/flows/authorization_code_spec.rb +0 -149
- data/spec/requests/flows/client_credentials_spec.rb +0 -86
- data/spec/requests/flows/implicit_grant_errors_spec.rb +0 -32
- data/spec/requests/flows/implicit_grant_spec.rb +0 -61
- data/spec/requests/flows/password_spec.rb +0 -197
- data/spec/requests/flows/refresh_token_spec.rb +0 -174
- data/spec/requests/flows/revoke_token_spec.rb +0 -157
- data/spec/requests/flows/skip_authorization_spec.rb +0 -59
- data/spec/requests/protected_resources/metal_spec.rb +0 -14
- data/spec/requests/protected_resources/private_api_spec.rb +0 -81
- data/spec/routing/custom_controller_routes_spec.rb +0 -75
- data/spec/routing/default_routes_spec.rb +0 -39
- data/spec/routing/scoped_routes_spec.rb +0 -31
- data/spec/spec_helper.rb +0 -4
- data/spec/spec_helper_integration.rb +0 -74
- data/spec/support/dependencies/factory_girl.rb +0 -2
- data/spec/support/helpers/access_token_request_helper.rb +0 -11
- data/spec/support/helpers/authorization_request_helper.rb +0 -41
- data/spec/support/helpers/config_helper.rb +0 -9
- data/spec/support/helpers/model_helper.rb +0 -72
- data/spec/support/helpers/request_spec_helper.rb +0 -88
- data/spec/support/helpers/url_helper.rb +0 -56
- data/spec/support/http_method_shim.rb +0 -38
- data/spec/support/orm/active_record.rb +0 -3
- data/spec/support/shared/controllers_shared_context.rb +0 -65
- data/spec/support/shared/models_shared_examples.rb +0 -52
- data/spec/validators/redirect_uri_validator_spec.rb +0 -123
- data/spec/version/version_spec.rb +0 -15
data/.rubocop.yml
DELETED
data/.travis.yml
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
cache: bundler
|
2
|
-
language: ruby
|
3
|
-
sudo: false
|
4
|
-
|
5
|
-
rvm:
|
6
|
-
- 2.1
|
7
|
-
- 2.2
|
8
|
-
- 2.3
|
9
|
-
- 2.4
|
10
|
-
- 2.5
|
11
|
-
|
12
|
-
before_install:
|
13
|
-
- gem update --system # Need for Ruby 2.5.0. https://github.com/travis-ci/travis-ci/issues/8978
|
14
|
-
- gem install bundler -v '~> 1.10'
|
15
|
-
|
16
|
-
gemfile:
|
17
|
-
- gemfiles/rails_4_2.gemfile
|
18
|
-
- gemfiles/rails_5_0.gemfile
|
19
|
-
- gemfiles/rails_5_1.gemfile
|
20
|
-
- gemfiles/rails_5_2.gemfile
|
21
|
-
- gemfiles/rails_master.gemfile
|
22
|
-
|
23
|
-
matrix:
|
24
|
-
exclude:
|
25
|
-
- gemfile: gemfiles/rails_5_0.gemfile
|
26
|
-
rvm: 2.1
|
27
|
-
- gemfile: gemfiles/rails_5_1.gemfile
|
28
|
-
rvm: 2.1
|
29
|
-
- gemfile: gemfiles/rails_5_2.gemfile
|
30
|
-
rvm: 2.1
|
31
|
-
- gemfile: gemfiles/rails_master.gemfile
|
32
|
-
rvm: 2.1
|
33
|
-
- gemfile: gemfiles/rails_master.gemfile
|
34
|
-
rvm: 2.2
|
35
|
-
- gemfile: gemfiles/rails_master.gemfile
|
36
|
-
rvm: 2.3
|
37
|
-
allow_failures:
|
38
|
-
- gemfile: gemfiles/rails_master.gemfile
|
data/Appraisals
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
appraise "rails-4-2" do
|
2
|
-
gem "rails", "~> 4.2.0"
|
3
|
-
end
|
4
|
-
|
5
|
-
appraise "rails-5-0" do
|
6
|
-
gem "rails", "~> 5.0.0"
|
7
|
-
gem "rspec-rails", "~> 3.5"
|
8
|
-
end
|
9
|
-
|
10
|
-
appraise "rails-5-1" do
|
11
|
-
gem "rails", "~> 5.1.0"
|
12
|
-
gem "rspec-rails", "~> 3.5"
|
13
|
-
end
|
14
|
-
|
15
|
-
appraise "rails-master" do
|
16
|
-
gem "rails", git: 'https://github.com/rails/rails'
|
17
|
-
gem "arel", git: 'https://github.com/rails/arel'
|
18
|
-
end
|
data/CODE_OF_CONDUCT.md
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
# Contributor Covenant Code of Conduct
|
2
|
-
|
3
|
-
## Our Pledge
|
4
|
-
|
5
|
-
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
6
|
-
|
7
|
-
## Our Standards
|
8
|
-
|
9
|
-
Examples of behavior that contributes to creating a positive environment include:
|
10
|
-
|
11
|
-
* Using welcoming and inclusive language
|
12
|
-
* Being respectful of differing viewpoints and experiences
|
13
|
-
* Gracefully accepting constructive criticism
|
14
|
-
* Focusing on what is best for the community
|
15
|
-
* Showing empathy towards other community members
|
16
|
-
|
17
|
-
Examples of unacceptable behavior by participants include:
|
18
|
-
|
19
|
-
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
20
|
-
* Trolling, insulting/derogatory comments, and personal or political attacks
|
21
|
-
* Public or private harassment
|
22
|
-
* Publishing others' private information, such as a physical or electronic address, without explicit permission
|
23
|
-
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
24
|
-
|
25
|
-
## Our Responsibilities
|
26
|
-
|
27
|
-
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
28
|
-
|
29
|
-
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
|
30
|
-
|
31
|
-
## Scope
|
32
|
-
|
33
|
-
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
|
34
|
-
|
35
|
-
## Enforcement
|
36
|
-
|
37
|
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team members or current maintainer email, specified in gemspec. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
38
|
-
|
39
|
-
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
40
|
-
|
41
|
-
## Attribution
|
42
|
-
|
43
|
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
44
|
-
|
45
|
-
[homepage]: http://contributor-covenant.org
|
46
|
-
[version]: http://contributor-covenant.org/version/1/4/
|
data/CONTRIBUTING.md
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
# Contributing
|
2
|
-
|
3
|
-
We love pull requests from everyone. By participating in this project, you agree
|
4
|
-
to abide by the thoughtbot [code of conduct].
|
5
|
-
|
6
|
-
[code of conduct]: https://thoughtbot.com/open-source-code-of-conduct
|
7
|
-
|
8
|
-
Fork, then clone the repo:
|
9
|
-
|
10
|
-
git clone git@github.com:your-username/doorkeeper.git
|
11
|
-
|
12
|
-
Set up Ruby dependencies via Bundler
|
13
|
-
|
14
|
-
bundle install
|
15
|
-
|
16
|
-
Make sure the tests pass:
|
17
|
-
|
18
|
-
rake
|
19
|
-
|
20
|
-
Make your change.
|
21
|
-
Write tests.
|
22
|
-
Follow our [style guide][style].
|
23
|
-
Make the tests pass:
|
24
|
-
|
25
|
-
[style]: https://github.com/thoughtbot/guides/tree/master/style
|
26
|
-
|
27
|
-
rake
|
28
|
-
|
29
|
-
Add notes on your change to the `NEWS.md` file.
|
30
|
-
|
31
|
-
Write a [good commit message][commit].
|
32
|
-
Push to your fork.
|
33
|
-
[Submit a pull request][pr].
|
34
|
-
|
35
|
-
[commit]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
|
36
|
-
[pr]: https://github.com/doorkeeper-gem/doorkeeper/compare/
|
37
|
-
|
38
|
-
If [Hound] catches style violations,
|
39
|
-
fix them.
|
40
|
-
|
41
|
-
[hound]: https://houndci.com
|
42
|
-
|
43
|
-
Wait for us.
|
44
|
-
We try to at least comment on pull requests within one business day.
|
45
|
-
We may suggest changes.
|
46
|
-
|
47
|
-
Thank you for your contribution!
|
data/Gemfile
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
source "https://rubygems.org"
|
2
|
-
|
3
|
-
gem "rails", "~> 5.1"
|
4
|
-
|
5
|
-
gem "appraisal"
|
6
|
-
|
7
|
-
gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
|
8
|
-
gem "sqlite3", platform: [:ruby, :mswin, :mingw, :x64_mingw]
|
9
|
-
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]
|
10
|
-
gemspec
|
data/RELEASING.md
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
# Releasing doorkeeper
|
2
|
-
|
3
|
-
How to release doorkeeper in five easy steps!
|
4
|
-
|
5
|
-
1. Update `lib/doorkeeper/version.rb` file accordingly.
|
6
|
-
2. Update `NEWS.md` to reflect the changes since last release.
|
7
|
-
3. Commit changes: `git commit -am 'Bump to vVERSION'`
|
8
|
-
4. Run `rake release`
|
9
|
-
5. Announce the new release, making sure to say “thank you” to the contributors
|
10
|
-
who helped shape this version!
|
data/Rakefile
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'bundler/setup'
|
2
|
-
require 'rspec/core/rake_task'
|
3
|
-
|
4
|
-
desc 'Default: run specs.'
|
5
|
-
task default: :spec
|
6
|
-
|
7
|
-
desc "Run all specs"
|
8
|
-
RSpec::Core::RakeTask.new(:spec) do |config|
|
9
|
-
config.verbose = false
|
10
|
-
end
|
11
|
-
|
12
|
-
namespace :doorkeeper do
|
13
|
-
desc "Install doorkeeper in dummy app"
|
14
|
-
task :install do
|
15
|
-
cd 'spec/dummy'
|
16
|
-
system 'bundle exec rails g doorkeeper:install --force'
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
Bundler::GemHelper.install_tasks
|
data/SECURITY.md
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# Reporting security issues in Doorkeeper
|
2
|
-
|
3
|
-
Hello! Thank you for wanting to disclose a possible security
|
4
|
-
vulnerability within the Doorkeeper gem! Please follow our disclosure
|
5
|
-
policy as outlined below:
|
6
|
-
|
7
|
-
1. Do NOT open up a GitHub issue with your report. Security reports
|
8
|
-
should be kept private until a possible fix is determined.
|
9
|
-
2. Send an email to Nikita Bulai at bulaj.nikita AT gmail.com or one of
|
10
|
-
the others Doorkeeper maintainers listed in gemspec. You should receive
|
11
|
-
a prompt response.
|
12
|
-
3. Be patient. Since Doorkeeper is in a stable maintenance phase, we want to
|
13
|
-
do as little as possible to rock the boat of the project.
|
14
|
-
|
15
|
-
Thank you very much for adhering for these policies!
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'uri'
|
2
|
-
|
3
|
-
class RedirectUriValidator < ActiveModel::EachValidator
|
4
|
-
def self.native_redirect_uri
|
5
|
-
Doorkeeper.configuration.native_redirect_uri
|
6
|
-
end
|
7
|
-
|
8
|
-
def validate_each(record, attribute, value)
|
9
|
-
if value.blank?
|
10
|
-
record.errors.add(attribute, :blank)
|
11
|
-
else
|
12
|
-
value.split.each do |val|
|
13
|
-
uri = ::URI.parse(val)
|
14
|
-
next if native_redirect_uri?(uri)
|
15
|
-
record.errors.add(attribute, :forbidden_uri) if forbidden_uri?(uri)
|
16
|
-
record.errors.add(attribute, :fragment_present) unless uri.fragment.nil?
|
17
|
-
record.errors.add(attribute, :relative_uri) if uri.scheme.nil? || uri.host.nil?
|
18
|
-
record.errors.add(attribute, :secured_uri) if invalid_ssl_uri?(uri)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
rescue URI::InvalidURIError
|
22
|
-
record.errors.add(attribute, :invalid_uri)
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def native_redirect_uri?(uri)
|
28
|
-
self.class.native_redirect_uri.present? && uri.to_s == self.class.native_redirect_uri.to_s
|
29
|
-
end
|
30
|
-
|
31
|
-
def forbidden_uri?(uri)
|
32
|
-
Doorkeeper.configuration.forbid_redirect_uri.call(uri)
|
33
|
-
end
|
34
|
-
|
35
|
-
def invalid_ssl_uri?(uri)
|
36
|
-
forces_ssl = Doorkeeper.configuration.force_ssl_in_redirect_uri
|
37
|
-
|
38
|
-
if forces_ssl.respond_to?(:call)
|
39
|
-
forces_ssl.call(uri)
|
40
|
-
else
|
41
|
-
forces_ssl && uri.try(:scheme) == 'http'
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
data/doorkeeper.gemspec
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
$LOAD_PATH.push File.expand_path("../lib", __FILE__)
|
2
|
-
|
3
|
-
require "doorkeeper/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |s|
|
6
|
-
s.name = "doorkeeper"
|
7
|
-
s.version = Doorkeeper.gem_version
|
8
|
-
s.authors = ["Felipe Elias Philipp", "Tute Costa", "Jon Moss", "Nikita Bulai"]
|
9
|
-
s.email = %w(bulaj.nikita@gmail.com)
|
10
|
-
s.homepage = "https://github.com/doorkeeper-gem/doorkeeper"
|
11
|
-
s.summary = "OAuth 2 provider for Rails and Grape"
|
12
|
-
s.description = "Doorkeeper is an OAuth 2 provider for Rails and Grape."
|
13
|
-
s.license = 'MIT'
|
14
|
-
|
15
|
-
s.files = `git ls-files`.split("\n")
|
16
|
-
s.test_files = `git ls-files -- spec/*`.split("\n")
|
17
|
-
s.require_paths = ["lib"]
|
18
|
-
|
19
|
-
s.add_dependency "railties", ">= 4.2"
|
20
|
-
s.required_ruby_version = ">= 2.1"
|
21
|
-
|
22
|
-
s.add_development_dependency "capybara"
|
23
|
-
s.add_development_dependency "coveralls"
|
24
|
-
s.add_development_dependency "grape"
|
25
|
-
s.add_development_dependency "database_cleaner", "~> 1.6"
|
26
|
-
s.add_development_dependency "factory_bot", "~> 4.8"
|
27
|
-
s.add_development_dependency "generator_spec", "~> 0.9.3"
|
28
|
-
s.add_development_dependency "rake", ">= 11.3.0"
|
29
|
-
s.add_development_dependency "rspec-rails"
|
30
|
-
|
31
|
-
s.post_install_message = Doorkeeper::CVE_2018_1000211_WARNING
|
32
|
-
end
|
data/gemfiles/rails_4_2.gemfile
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "rails", "~> 4.2.0"
|
6
|
-
gem "appraisal"
|
7
|
-
gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
|
8
|
-
gem "sqlite3", platform: [:ruby, :mswin, :mingw, :x64_mingw]
|
9
|
-
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw]
|
10
|
-
# Older Grape requires Ruby >= 2.2.2
|
11
|
-
gem "grape", '~> 0.16', '< 0.19.2'
|
12
|
-
|
13
|
-
gemspec path: "../"
|
data/gemfiles/rails_5_0.gemfile
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "rails", "~> 5.0.0"
|
6
|
-
gem "appraisal"
|
7
|
-
gem "activerecord-jdbcsqlite3-adapter", platforms: :jruby
|
8
|
-
gem "sqlite3", platforms: [:ruby, :mswin, :mingw, :x64_mingw]
|
9
|
-
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw]
|
10
|
-
gem "rspec-rails", "~> 3.5"
|
11
|
-
|
12
|
-
gemspec path: "../"
|
data/gemfiles/rails_5_1.gemfile
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "rails", "~> 5.1.0"
|
6
|
-
gem "appraisal"
|
7
|
-
gem "activerecord-jdbcsqlite3-adapter", platforms: :jruby
|
8
|
-
gem "sqlite3", platforms: [:ruby, :mswin, :mingw, :x64_mingw]
|
9
|
-
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw]
|
10
|
-
gem "rspec-rails", "~> 3.7"
|
11
|
-
|
12
|
-
gemspec path: "../"
|
data/gemfiles/rails_5_2.gemfile
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "rails", "5.2.0.rc1"
|
6
|
-
gem "appraisal"
|
7
|
-
gem "activerecord-jdbcsqlite3-adapter", platforms: :jruby
|
8
|
-
gem "sqlite3", platforms: [:ruby, :mswin, :mingw, :x64_mingw]
|
9
|
-
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw]
|
10
|
-
gem "rspec-rails", "~> 3.7"
|
11
|
-
|
12
|
-
gemspec path: "../"
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "rails", git: 'https://github.com/rails/rails'
|
6
|
-
gem "arel", git: 'https://github.com/rails/arel'
|
7
|
-
|
8
|
-
gem "appraisal"
|
9
|
-
gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
|
10
|
-
gem "sqlite3", platform: [:ruby, :mswin, :mingw, :x64_mingw]
|
11
|
-
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw]
|
12
|
-
gem "rspec-rails", "~> 3.7"
|
13
|
-
|
14
|
-
gemspec path: "../"
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'doorkeeper/validations'
|
2
|
-
require 'doorkeeper/oauth/scopes'
|
3
|
-
require 'doorkeeper/oauth/helpers/scope_checker'
|
4
|
-
|
5
|
-
module Doorkeeper
|
6
|
-
module OAuth
|
7
|
-
class ClientCredentialsRequest < BaseRequest
|
8
|
-
class Validation
|
9
|
-
include Validations
|
10
|
-
include OAuth::Helpers
|
11
|
-
|
12
|
-
validate :client, error: :invalid_client
|
13
|
-
validate :scopes, error: :invalid_scope
|
14
|
-
|
15
|
-
def initialize(server, request)
|
16
|
-
@server, @request, @client = server, request, request.client
|
17
|
-
|
18
|
-
validate
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def validate_client
|
24
|
-
@client.present?
|
25
|
-
end
|
26
|
-
|
27
|
-
def validate_scopes
|
28
|
-
return true unless @request.scopes.present?
|
29
|
-
|
30
|
-
application_scopes = if @client.present?
|
31
|
-
@client.application.scopes
|
32
|
-
else
|
33
|
-
''
|
34
|
-
end
|
35
|
-
|
36
|
-
ScopeChecker.valid?(
|
37
|
-
@request.scopes.to_s,
|
38
|
-
@server.scopes,
|
39
|
-
application_scopes
|
40
|
-
)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'rails/generators/active_record'
|
4
|
-
|
5
|
-
module Doorkeeper
|
6
|
-
class AddClientConfidentialityGenerator < ::Rails::Generators::Base
|
7
|
-
include ::Rails::Generators::Migration
|
8
|
-
source_root File.expand_path('templates', __dir__)
|
9
|
-
desc 'Adds a migration to fix CVE-2018-1000211.'
|
10
|
-
|
11
|
-
def install
|
12
|
-
migration_template(
|
13
|
-
'add_confidential_to_application_migration.rb.erb',
|
14
|
-
'db/migrate/add_confidential_to_doorkeeper_application.rb',
|
15
|
-
migration_version: migration_version
|
16
|
-
)
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.next_migration_number(dirname)
|
20
|
-
::ActiveRecord::Generators::Base.next_migration_number(dirname)
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def migration_version
|
26
|
-
if ::ActiveRecord::VERSION::MAJOR >= 5
|
27
|
-
"[#{::ActiveRecord::VERSION::MAJOR}.#{::ActiveRecord::VERSION::MINOR}]"
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
class AddConfidentialToDoorkeeperApplication < ActiveRecord::Migration<%= migration_version %>
|
2
|
-
def change
|
3
|
-
add_column(
|
4
|
-
:oauth_applications,
|
5
|
-
:confidential,
|
6
|
-
:boolean,
|
7
|
-
null: false,
|
8
|
-
default: true # maintaining backwards compatibility: require secrets
|
9
|
-
)
|
10
|
-
end
|
11
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
require 'spec_helper_integration'
|
2
|
-
|
3
|
-
module Doorkeeper
|
4
|
-
describe ApplicationsController do
|
5
|
-
context 'when admin is not authenticated' do
|
6
|
-
before do
|
7
|
-
allow(Doorkeeper.configuration).to receive(:authenticate_admin).and_return(proc do
|
8
|
-
redirect_to main_app.root_url
|
9
|
-
end)
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'redirects as set in Doorkeeper.authenticate_admin' do
|
13
|
-
get :index
|
14
|
-
expect(response).to redirect_to(controller.main_app.root_url)
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'does not create application' do
|
18
|
-
expect do
|
19
|
-
post :create, doorkeeper_application: {
|
20
|
-
name: 'Example',
|
21
|
-
redirect_uri: 'https://example.com' }
|
22
|
-
end.not_to change { Doorkeeper::Application.count }
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'when admin is authenticated' do
|
27
|
-
render_views
|
28
|
-
|
29
|
-
before do
|
30
|
-
allow(Doorkeeper.configuration).to receive(:authenticate_admin).and_return(->(*) { true })
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'sorts applications by created_at' do
|
34
|
-
first_application = FactoryBot.create(:application)
|
35
|
-
second_application = FactoryBot.create(:application)
|
36
|
-
expect(Doorkeeper::Application).to receive(:ordered_by).and_call_original
|
37
|
-
get :index
|
38
|
-
expect(response.body).to have_selector("tbody tr:first-child#application_#{first_application.id}")
|
39
|
-
expect(response.body).to have_selector("tbody tr:last-child#application_#{second_application.id}")
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'creates application' do
|
43
|
-
expect do
|
44
|
-
post :create, doorkeeper_application: {
|
45
|
-
name: 'Example',
|
46
|
-
redirect_uri: 'https://example.com' }
|
47
|
-
end.to change { Doorkeeper::Application.count }.by(1)
|
48
|
-
expect(response).to be_redirect
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'does not allow mass assignment of uid or secret' do
|
52
|
-
application = FactoryBot.create(:application)
|
53
|
-
put :update, id: application.id, doorkeeper_application: {
|
54
|
-
uid: '1A2B3C4D',
|
55
|
-
secret: '1A2B3C4D' }
|
56
|
-
|
57
|
-
expect(application.reload.uid).not_to eq '1A2B3C4D'
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'updates application' do
|
61
|
-
application = FactoryBot.create(:application)
|
62
|
-
put :update, id: application.id, doorkeeper_application: {
|
63
|
-
name: 'Example',
|
64
|
-
redirect_uri: 'https://example.com' }
|
65
|
-
expect(application.reload.name).to eq 'Example'
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|