super-smart-kit 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/doorkeeper-5.9.3/CHANGELOG.md +1208 -0
- data/doorkeeper-5.9.3/MIT-LICENSE +20 -0
- data/doorkeeper-5.9.3/README.md +186 -0
- data/doorkeeper-5.9.3/app/assets/stylesheets/doorkeeper/admin/application.css +10 -0
- data/doorkeeper-5.9.3/app/assets/stylesheets/doorkeeper/application.css +64 -0
- data/doorkeeper-5.9.3/app/controllers/doorkeeper/application_controller.rb +14 -0
- data/doorkeeper-5.9.3/app/controllers/doorkeeper/application_metal_controller.rb +13 -0
- data/doorkeeper-5.9.3/app/controllers/doorkeeper/applications_controller.rb +99 -0
- data/doorkeeper-5.9.3/app/controllers/doorkeeper/authorizations_controller.rb +164 -0
- data/doorkeeper-5.9.3/app/controllers/doorkeeper/authorized_applications_controller.rb +33 -0
- data/doorkeeper-5.9.3/app/controllers/doorkeeper/token_info_controller.rb +25 -0
- data/doorkeeper-5.9.3/app/controllers/doorkeeper/tokens_controller.rb +180 -0
- data/doorkeeper-5.9.3/app/helpers/doorkeeper/dashboard_helper.rb +21 -0
- data/doorkeeper-5.9.3/app/views/doorkeeper/applications/_delete_form.html.erb +6 -0
- data/doorkeeper-5.9.3/app/views/doorkeeper/applications/_form.html.erb +59 -0
- data/doorkeeper-5.9.3/app/views/doorkeeper/applications/edit.html.erb +5 -0
- data/doorkeeper-5.9.3/app/views/doorkeeper/applications/index.html.erb +38 -0
- data/doorkeeper-5.9.3/app/views/doorkeeper/applications/new.html.erb +5 -0
- data/doorkeeper-5.9.3/app/views/doorkeeper/applications/show.html.erb +63 -0
- data/doorkeeper-5.9.3/app/views/doorkeeper/authorizations/error.html.erb +9 -0
- data/doorkeeper-5.9.3/app/views/doorkeeper/authorizations/form_post.html.erb +15 -0
- data/doorkeeper-5.9.3/app/views/doorkeeper/authorizations/new.html.erb +46 -0
- data/doorkeeper-5.9.3/app/views/doorkeeper/authorizations/show.html.erb +7 -0
- data/doorkeeper-5.9.3/app/views/doorkeeper/authorized_applications/_delete_form.html.erb +4 -0
- data/doorkeeper-5.9.3/app/views/doorkeeper/authorized_applications/index.html.erb +24 -0
- data/doorkeeper-5.9.3/app/views/layouts/doorkeeper/admin.html.erb +39 -0
- data/doorkeeper-5.9.3/app/views/layouts/doorkeeper/application.html.erb +23 -0
- data/doorkeeper-5.9.3/config/locales/en.yml +155 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/config/abstract_builder.rb +28 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/config/option.rb +82 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/config/validations.rb +65 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/config.rb +721 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/engine.rb +38 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/errors.rb +85 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/grant_flow/fallback_flow.rb +15 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/grant_flow/flow.rb +44 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/grant_flow/registry.rb +50 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/grant_flow.rb +45 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/grape/authorization_decorator.rb +19 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/grape/helpers.rb +58 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/helpers/controller.rb +91 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/access_grant_mixin.rb +124 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/access_token_mixin.rb +526 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/application_mixin.rb +96 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/accessible.rb +15 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/expirable.rb +36 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/expiration_time_sql_math.rb +96 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/orderable.rb +15 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/ownership.rb +18 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/polymorphic_resource_owner.rb +29 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/resource_ownerable.rb +47 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/reusable.rb +19 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/revocable.rb +31 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/scopes.rb +27 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/secret_storable.rb +106 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/write_to_primary.rb +57 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/authorization/code.rb +76 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/authorization/context.rb +17 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/authorization/token.rb +100 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/authorization/uri_builder.rb +33 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/authorization_code_request.rb +125 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/base_request.rb +68 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/base_response.rb +31 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/client/credentials.rb +34 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/client.rb +28 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/client_credentials/creator.rb +57 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/client_credentials/issuer.rb +48 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/client_credentials/validator.rb +55 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/client_credentials_request.rb +46 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/code_request.rb +25 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/code_response.rb +51 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/error.rb +16 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/error_response.rb +121 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/forbidden_token_response.rb +31 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/helpers/scope_checker.rb +50 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/helpers/unique_token.rb +30 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/helpers/uri_checker.rb +83 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/hooks/context.rb +21 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/invalid_request_response.rb +47 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/invalid_token_response.rb +54 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/nonstandard.rb +39 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/password_access_token_request.rb +75 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/pre_authorization.rb +187 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/refresh_token_request.rb +144 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/scopes.rb +134 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/token.rb +66 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/token_introspection.rb +220 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/token_request.rb +25 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth/token_response.rb +38 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/oauth.rb +13 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/access_grant.rb +9 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/access_token.rb +9 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/application.rb +10 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/mixins/access_grant.rb +64 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/mixins/access_token.rb +95 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/mixins/application.rb +223 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/redirect_uri_validator.rb +66 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/stale_records_cleaner.rb +44 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record.rb +41 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/rails/helpers.rb +82 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/rails/routes/abstract_router.rb +35 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/rails/routes/mapper.rb +30 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/rails/routes/mapping.rb +40 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/rails/routes/registry.rb +45 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/rails/routes.rb +110 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/rake/db.rake +40 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/rake/setup.rake +6 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/rake.rb +14 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/request/authorization_code.rb +26 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/request/client_credentials.rb +17 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/request/code.rb +17 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/request/password.rb +19 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/request/refresh_token.rb +22 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/request/strategy.rb +19 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/request/token.rb +17 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/request.rb +73 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/revocable_tokens/revocable_access_token.rb +21 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/revocable_tokens/revocable_refresh_token.rb +21 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/secret_storing/base.rb +64 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/secret_storing/bcrypt.rb +60 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/secret_storing/plain.rb +33 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/secret_storing/sha256_hash.rb +26 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/server.rb +44 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/stale_records_cleaner.rb +24 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/validations.rb +33 -0
- data/doorkeeper-5.9.3/lib/doorkeeper/version.rb +14 -0
- data/doorkeeper-5.9.3/lib/doorkeeper.rb +209 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/application_owner_generator.rb +33 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/confidential_applications_generator.rb +33 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/enable_polymorphic_resource_owner_generator.rb +39 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/install_generator.rb +22 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/migration_generator.rb +32 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/pkce_generator.rb +33 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/previous_refresh_token_generator.rb +41 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/remove_applications_secret_not_null_constraint_generator.rb +33 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/README +24 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/add_confidential_to_applications.rb.erb +13 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb.erb +9 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/add_previous_refresh_token_to_access_tokens.rb.erb +13 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/enable_pkce_migration.rb.erb +8 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/enable_polymorphic_resource_owner_migration.rb.erb +17 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/initializer.rb +544 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/migration.rb.erb +99 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/remove_applications_secret_not_null_constraint.rb.erb +7 -0
- data/doorkeeper-5.9.3/lib/generators/doorkeeper/views_generator.rb +18 -0
- data/doorkeeper-5.9.3/vendor/assets/stylesheets/doorkeeper/bootstrap.min.css +6 -0
- data/super-smart-kit.gemspec +12 -0
- metadata +188 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Doorkeeper
|
|
4
|
+
module Validations
|
|
5
|
+
extend ActiveSupport::Concern
|
|
6
|
+
|
|
7
|
+
attr_accessor :error
|
|
8
|
+
|
|
9
|
+
def validate
|
|
10
|
+
@error = nil
|
|
11
|
+
|
|
12
|
+
self.class.validations.each do |validation|
|
|
13
|
+
@error = validation[:options][:error] unless send("validate_#{validation[:attribute]}")
|
|
14
|
+
break if @error
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def valid?
|
|
19
|
+
validate
|
|
20
|
+
@error.nil?
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
module ClassMethods
|
|
24
|
+
def validate(attribute, options = {})
|
|
25
|
+
validations << { attribute: attribute, options: options }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def validations
|
|
29
|
+
@validations ||= []
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "doorkeeper/config"
|
|
4
|
+
require "doorkeeper/engine"
|
|
5
|
+
|
|
6
|
+
# Main Doorkeeper namespace.
|
|
7
|
+
#
|
|
8
|
+
module Doorkeeper
|
|
9
|
+
autoload :Errors, "doorkeeper/errors"
|
|
10
|
+
autoload :GrantFlow, "doorkeeper/grant_flow"
|
|
11
|
+
autoload :OAuth, "doorkeeper/oauth"
|
|
12
|
+
autoload :Rake, "doorkeeper/rake"
|
|
13
|
+
autoload :Request, "doorkeeper/request"
|
|
14
|
+
autoload :Server, "doorkeeper/server"
|
|
15
|
+
autoload :StaleRecordsCleaner, "doorkeeper/stale_records_cleaner"
|
|
16
|
+
autoload :Validations, "doorkeeper/validations"
|
|
17
|
+
autoload :VERSION, "doorkeeper/version"
|
|
18
|
+
|
|
19
|
+
autoload :AccessGrantMixin, "doorkeeper/models/access_grant_mixin"
|
|
20
|
+
autoload :AccessTokenMixin, "doorkeeper/models/access_token_mixin"
|
|
21
|
+
autoload :ApplicationMixin, "doorkeeper/models/application_mixin"
|
|
22
|
+
|
|
23
|
+
module Helpers
|
|
24
|
+
autoload :Controller, "doorkeeper/helpers/controller"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
module Request
|
|
28
|
+
autoload :Strategy, "doorkeeper/request/strategy"
|
|
29
|
+
autoload :AuthorizationCode, "doorkeeper/request/authorization_code"
|
|
30
|
+
autoload :ClientCredentials, "doorkeeper/request/client_credentials"
|
|
31
|
+
autoload :Code, "doorkeeper/request/code"
|
|
32
|
+
autoload :Password, "doorkeeper/request/password"
|
|
33
|
+
autoload :RefreshToken, "doorkeeper/request/refresh_token"
|
|
34
|
+
autoload :Token, "doorkeeper/request/token"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
module RevocableTokens
|
|
38
|
+
autoload :RevocableAccessToken, "doorkeeper/revocable_tokens/revocable_access_token"
|
|
39
|
+
autoload :RevocableRefreshToken, "doorkeeper/revocable_tokens/revocable_refresh_token"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
module OAuth
|
|
43
|
+
autoload :BaseRequest, "doorkeeper/oauth/base_request"
|
|
44
|
+
autoload :AuthorizationCodeRequest, "doorkeeper/oauth/authorization_code_request"
|
|
45
|
+
autoload :BaseResponse, "doorkeeper/oauth/base_response"
|
|
46
|
+
autoload :CodeResponse, "doorkeeper/oauth/code_response"
|
|
47
|
+
autoload :Client, "doorkeeper/oauth/client"
|
|
48
|
+
autoload :ClientCredentialsRequest, "doorkeeper/oauth/client_credentials_request"
|
|
49
|
+
autoload :CodeRequest, "doorkeeper/oauth/code_request"
|
|
50
|
+
autoload :ErrorResponse, "doorkeeper/oauth/error_response"
|
|
51
|
+
autoload :Error, "doorkeeper/oauth/error"
|
|
52
|
+
autoload :InvalidTokenResponse, "doorkeeper/oauth/invalid_token_response"
|
|
53
|
+
autoload :InvalidRequestResponse, "doorkeeper/oauth/invalid_request_response"
|
|
54
|
+
autoload :ForbiddenTokenResponse, "doorkeeper/oauth/forbidden_token_response"
|
|
55
|
+
autoload :NonStandard, "doorkeeper/oauth/nonstandard"
|
|
56
|
+
autoload :PasswordAccessTokenRequest, "doorkeeper/oauth/password_access_token_request"
|
|
57
|
+
autoload :PreAuthorization, "doorkeeper/oauth/pre_authorization"
|
|
58
|
+
autoload :RefreshTokenRequest, "doorkeeper/oauth/refresh_token_request"
|
|
59
|
+
autoload :Scopes, "doorkeeper/oauth/scopes"
|
|
60
|
+
autoload :Token, "doorkeeper/oauth/token"
|
|
61
|
+
autoload :TokenIntrospection, "doorkeeper/oauth/token_introspection"
|
|
62
|
+
autoload :TokenRequest, "doorkeeper/oauth/token_request"
|
|
63
|
+
autoload :TokenResponse, "doorkeeper/oauth/token_response"
|
|
64
|
+
|
|
65
|
+
module Authorization
|
|
66
|
+
autoload :Code, "doorkeeper/oauth/authorization/code"
|
|
67
|
+
autoload :Context, "doorkeeper/oauth/authorization/context"
|
|
68
|
+
autoload :Token, "doorkeeper/oauth/authorization/token"
|
|
69
|
+
autoload :URIBuilder, "doorkeeper/oauth/authorization/uri_builder"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
class Client
|
|
73
|
+
autoload :Credentials, "doorkeeper/oauth/client/credentials"
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
module ClientCredentials
|
|
77
|
+
autoload :Validator, "doorkeeper/oauth/client_credentials/validator"
|
|
78
|
+
autoload :Creator, "doorkeeper/oauth/client_credentials/creator"
|
|
79
|
+
autoload :Issuer, "doorkeeper/oauth/client_credentials/issuer"
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
module Helpers
|
|
83
|
+
autoload :ScopeChecker, "doorkeeper/oauth/helpers/scope_checker"
|
|
84
|
+
autoload :URIChecker, "doorkeeper/oauth/helpers/uri_checker"
|
|
85
|
+
autoload :UniqueToken, "doorkeeper/oauth/helpers/unique_token"
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
module Hooks
|
|
89
|
+
autoload :Context, "doorkeeper/oauth/hooks/context"
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
module Models
|
|
94
|
+
autoload :Accessible, "doorkeeper/models/concerns/accessible"
|
|
95
|
+
autoload :Expirable, "doorkeeper/models/concerns/expirable"
|
|
96
|
+
autoload :ExpirationTimeSqlMath, "doorkeeper/models/concerns/expiration_time_sql_math"
|
|
97
|
+
autoload :Orderable, "doorkeeper/models/concerns/orderable"
|
|
98
|
+
autoload :PolymorphicResourceOwner, "doorkeeper/models/concerns/polymorphic_resource_owner"
|
|
99
|
+
autoload :Scopes, "doorkeeper/models/concerns/scopes"
|
|
100
|
+
autoload :Reusable, "doorkeeper/models/concerns/reusable"
|
|
101
|
+
autoload :ResourceOwnerable, "doorkeeper/models/concerns/resource_ownerable"
|
|
102
|
+
autoload :Revocable, "doorkeeper/models/concerns/revocable"
|
|
103
|
+
autoload :SecretStorable, "doorkeeper/models/concerns/secret_storable"
|
|
104
|
+
|
|
105
|
+
module Concerns
|
|
106
|
+
autoload :WriteToPrimary, "doorkeeper/models/concerns/write_to_primary"
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
module Orm
|
|
111
|
+
autoload :ActiveRecord, "doorkeeper/orm/active_record"
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
module Rails
|
|
115
|
+
autoload :Helpers, "doorkeeper/rails/helpers"
|
|
116
|
+
autoload :Routes, "doorkeeper/rails/routes"
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
module SecretStoring
|
|
120
|
+
autoload :Base, "doorkeeper/secret_storing/base"
|
|
121
|
+
autoload :Plain, "doorkeeper/secret_storing/plain"
|
|
122
|
+
autoload :Sha256Hash, "doorkeeper/secret_storing/sha256_hash"
|
|
123
|
+
autoload :BCrypt, "doorkeeper/secret_storing/bcrypt"
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
class << self
|
|
127
|
+
attr_reader :orm_adapter
|
|
128
|
+
|
|
129
|
+
def configure(&block)
|
|
130
|
+
@config = Config::Builder.new(&block).build
|
|
131
|
+
setup
|
|
132
|
+
@config
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# @return [Doorkeeper::Config] configuration instance
|
|
136
|
+
#
|
|
137
|
+
def configuration
|
|
138
|
+
@config || configure
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def configured?
|
|
142
|
+
!@config.nil?
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
alias config configuration
|
|
146
|
+
|
|
147
|
+
def setup
|
|
148
|
+
setup_orm_adapter
|
|
149
|
+
|
|
150
|
+
# Deprecated, will be removed soon
|
|
151
|
+
unless configuration.orm == :active_record
|
|
152
|
+
setup_orm_models
|
|
153
|
+
setup_application_owner
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def setup_filter_parameters
|
|
158
|
+
return unless defined?(::Rails) && ::Rails.application && configured?
|
|
159
|
+
|
|
160
|
+
parameters = %w[client_secret authentication_token access_token refresh_token]
|
|
161
|
+
parameters << "code" if configuration.grant_flows.include?("authorization_code")
|
|
162
|
+
filter = /^(#{Regexp.union(parameters)})$/
|
|
163
|
+
filter_params = ::Rails.application.config.filter_parameters
|
|
164
|
+
filter_params << filter unless filter_params.include?(filter)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def setup_orm_adapter
|
|
168
|
+
@orm_adapter = "doorkeeper/orm/#{configuration.orm}".classify.constantize
|
|
169
|
+
rescue NameError => e
|
|
170
|
+
raise e, "ORM adapter not found (#{configuration.orm})", <<-ERROR_MSG.strip_heredoc
|
|
171
|
+
[DOORKEEPER] ORM adapter not found (#{configuration.orm}), or there was an error
|
|
172
|
+
trying to load it.
|
|
173
|
+
|
|
174
|
+
You probably need to add the related gem for this adapter to work with
|
|
175
|
+
doorkeeper.
|
|
176
|
+
ERROR_MSG
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def run_orm_hooks
|
|
180
|
+
config.clear_cache!
|
|
181
|
+
|
|
182
|
+
if @orm_adapter.respond_to?(:run_hooks)
|
|
183
|
+
@orm_adapter.run_hooks
|
|
184
|
+
else
|
|
185
|
+
::Kernel.warn <<~MSG.strip_heredoc
|
|
186
|
+
[DOORKEEPER] ORM "#{configuration.orm}" should move all it's setup logic under `#run_hooks` method for
|
|
187
|
+
the #{@orm_adapter.name}. Later versions of Doorkeeper will no longer support `setup_orm_models` and
|
|
188
|
+
`setup_application_owner` API.
|
|
189
|
+
MSG
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def setup_orm_models
|
|
194
|
+
@orm_adapter.initialize_models!
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
def setup_application_owner
|
|
198
|
+
@orm_adapter.initialize_application_owner!
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
def authenticate(request, methods = Doorkeeper.config.access_token_methods)
|
|
202
|
+
OAuth::Token.authenticate(request, *methods)
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def gem_version
|
|
206
|
+
::Gem::Version.new(::Doorkeeper::VERSION::STRING)
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
require "rails/generators/active_record"
|
|
5
|
+
|
|
6
|
+
module Doorkeeper
|
|
7
|
+
# Generates migration to add reference to owner of the
|
|
8
|
+
# Doorkeeper application.
|
|
9
|
+
#
|
|
10
|
+
class ApplicationOwnerGenerator < ::Rails::Generators::Base
|
|
11
|
+
include ::Rails::Generators::Migration
|
|
12
|
+
source_root File.expand_path("templates", __dir__)
|
|
13
|
+
desc "Provide support for client application ownership."
|
|
14
|
+
|
|
15
|
+
def application_owner
|
|
16
|
+
migration_template(
|
|
17
|
+
"add_owner_to_application_migration.rb.erb",
|
|
18
|
+
"db/migrate/add_owner_to_application.rb",
|
|
19
|
+
migration_version: migration_version,
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.next_migration_number(dirname)
|
|
24
|
+
ActiveRecord::Generators::Base.next_migration_number(dirname)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def migration_version
|
|
30
|
+
"[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
require "rails/generators/active_record"
|
|
5
|
+
|
|
6
|
+
module Doorkeeper
|
|
7
|
+
# Generates migration to add confidential column to Doorkeeper
|
|
8
|
+
# applications table.
|
|
9
|
+
#
|
|
10
|
+
class ConfidentialApplicationsGenerator < ::Rails::Generators::Base
|
|
11
|
+
include ::Rails::Generators::Migration
|
|
12
|
+
source_root File.expand_path("templates", __dir__)
|
|
13
|
+
desc "Add confidential column to Doorkeeper applications"
|
|
14
|
+
|
|
15
|
+
def confidential_applications
|
|
16
|
+
migration_template(
|
|
17
|
+
"add_confidential_to_applications.rb.erb",
|
|
18
|
+
"db/migrate/add_confidential_to_applications.rb",
|
|
19
|
+
migration_version: migration_version,
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.next_migration_number(dirname)
|
|
24
|
+
ActiveRecord::Generators::Base.next_migration_number(dirname)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def migration_version
|
|
30
|
+
"[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/doorkeeper-5.9.3/lib/generators/doorkeeper/enable_polymorphic_resource_owner_generator.rb
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
require "rails/generators/active_record"
|
|
5
|
+
|
|
6
|
+
module Doorkeeper
|
|
7
|
+
# Generates migration with polymorphic resource owner required
|
|
8
|
+
# database columns for Doorkeeper Access Token and Access Grant
|
|
9
|
+
# models.
|
|
10
|
+
#
|
|
11
|
+
class EnablePolymorphicResourceOwnerGenerator < ::Rails::Generators::Base
|
|
12
|
+
include ::Rails::Generators::Migration
|
|
13
|
+
source_root File.expand_path("templates", __dir__)
|
|
14
|
+
desc "Provide support for polymorphic Resource Owner."
|
|
15
|
+
|
|
16
|
+
def enable_polymorphic_resource_owner
|
|
17
|
+
migration_template(
|
|
18
|
+
"enable_polymorphic_resource_owner_migration.rb.erb",
|
|
19
|
+
"db/migrate/enable_polymorphic_resource_owner.rb",
|
|
20
|
+
migration_version: migration_version,
|
|
21
|
+
)
|
|
22
|
+
gsub_file(
|
|
23
|
+
"config/initializers/doorkeeper.rb",
|
|
24
|
+
"# use_polymorphic_resource_owner",
|
|
25
|
+
"use_polymorphic_resource_owner",
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.next_migration_number(dirname)
|
|
30
|
+
ActiveRecord::Generators::Base.next_migration_number(dirname)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def migration_version
|
|
36
|
+
"[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
require "rails/generators/active_record"
|
|
5
|
+
|
|
6
|
+
module Doorkeeper
|
|
7
|
+
# Setup doorkeeper into Rails application: locales, routes, etc.
|
|
8
|
+
#
|
|
9
|
+
class InstallGenerator < ::Rails::Generators::Base
|
|
10
|
+
include ::Rails::Generators::Migration
|
|
11
|
+
source_root File.expand_path("templates", __dir__)
|
|
12
|
+
desc "Installs Doorkeeper."
|
|
13
|
+
|
|
14
|
+
def install
|
|
15
|
+
template "initializer.rb", "config/initializers/doorkeeper.rb"
|
|
16
|
+
copy_file File.expand_path("../../../config/locales/en.yml", __dir__),
|
|
17
|
+
"config/locales/doorkeeper.en.yml"
|
|
18
|
+
route "use_doorkeeper"
|
|
19
|
+
readme "README"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
require "rails/generators/active_record"
|
|
5
|
+
|
|
6
|
+
module Doorkeeper
|
|
7
|
+
# Copies main Doorkeeper migration into parent Rails application.
|
|
8
|
+
#
|
|
9
|
+
class MigrationGenerator < ::Rails::Generators::Base
|
|
10
|
+
include ::Rails::Generators::Migration
|
|
11
|
+
source_root File.expand_path("templates", __dir__)
|
|
12
|
+
desc "Installs Doorkeeper migration file."
|
|
13
|
+
|
|
14
|
+
def install
|
|
15
|
+
migration_template(
|
|
16
|
+
"migration.rb.erb",
|
|
17
|
+
"db/migrate/create_doorkeeper_tables.rb",
|
|
18
|
+
migration_version: migration_version,
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.next_migration_number(dirname)
|
|
23
|
+
ActiveRecord::Generators::Base.next_migration_number(dirname)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def migration_version
|
|
29
|
+
"[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
require "rails/generators/active_record"
|
|
5
|
+
|
|
6
|
+
module Doorkeeper
|
|
7
|
+
# Generates migration with PKCE required database columns for
|
|
8
|
+
# Doorkeeper tables.
|
|
9
|
+
#
|
|
10
|
+
class PkceGenerator < ::Rails::Generators::Base
|
|
11
|
+
include ::Rails::Generators::Migration
|
|
12
|
+
source_root File.expand_path("templates", __dir__)
|
|
13
|
+
desc "Provide support for PKCE."
|
|
14
|
+
|
|
15
|
+
def pkce
|
|
16
|
+
migration_template(
|
|
17
|
+
"enable_pkce_migration.rb.erb",
|
|
18
|
+
"db/migrate/enable_pkce.rb",
|
|
19
|
+
migration_version: migration_version,
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.next_migration_number(dirname)
|
|
24
|
+
ActiveRecord::Generators::Base.next_migration_number(dirname)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def migration_version
|
|
30
|
+
"[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
require "rails/generators/active_record"
|
|
5
|
+
|
|
6
|
+
module Doorkeeper
|
|
7
|
+
# Generates migration to add previous refresh token column to the
|
|
8
|
+
# database for Doorkeeper tables.
|
|
9
|
+
#
|
|
10
|
+
class PreviousRefreshTokenGenerator < ::Rails::Generators::Base
|
|
11
|
+
include ::Rails::Generators::Migration
|
|
12
|
+
source_root File.expand_path("templates", __dir__)
|
|
13
|
+
desc "Support revoke refresh token on access token use"
|
|
14
|
+
|
|
15
|
+
def self.next_migration_number(path)
|
|
16
|
+
ActiveRecord::Generators::Base.next_migration_number(path)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def previous_refresh_token
|
|
20
|
+
return unless no_previous_refresh_token_column?
|
|
21
|
+
|
|
22
|
+
migration_template(
|
|
23
|
+
"add_previous_refresh_token_to_access_tokens.rb.erb",
|
|
24
|
+
"db/migrate/add_previous_refresh_token_to_access_tokens.rb",
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def migration_version
|
|
31
|
+
"[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def no_previous_refresh_token_column?
|
|
35
|
+
!ActiveRecord::Base.connection.column_exists?(
|
|
36
|
+
:oauth_access_tokens,
|
|
37
|
+
:previous_refresh_token,
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
require "rails/generators/active_record"
|
|
5
|
+
|
|
6
|
+
module Doorkeeper
|
|
7
|
+
# Generates migration with which drops NOT NULL constraint and allows not
|
|
8
|
+
# to bloat the database with redundant secret value.
|
|
9
|
+
#
|
|
10
|
+
class RemoveApplicationsSecretNotNullConstraintGenerator < ::Rails::Generators::Base
|
|
11
|
+
include ::Rails::Generators::Migration
|
|
12
|
+
source_root File.expand_path("templates", __dir__)
|
|
13
|
+
desc "Removes NOT NULL constraint for OAuth2 applications."
|
|
14
|
+
|
|
15
|
+
def remove_applications_secret_not_null_constraint
|
|
16
|
+
migration_template(
|
|
17
|
+
"remove_applications_secret_not_null_constraint.rb.erb",
|
|
18
|
+
"db/migrate/remove_applications_secret_not_null_constraint.rb",
|
|
19
|
+
migration_version: migration_version,
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.next_migration_number(dirname)
|
|
24
|
+
ActiveRecord::Generators::Base.next_migration_number(dirname)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def migration_version
|
|
30
|
+
"[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
===============================================================================
|
|
2
|
+
|
|
3
|
+
There is a setup that you need to do before you can use doorkeeper.
|
|
4
|
+
|
|
5
|
+
Step 1.
|
|
6
|
+
Go to config/initializers/doorkeeper.rb and configure
|
|
7
|
+
resource_owner_authenticator block.
|
|
8
|
+
|
|
9
|
+
Step 2.
|
|
10
|
+
Choose the ORM:
|
|
11
|
+
|
|
12
|
+
If you want to use ActiveRecord run:
|
|
13
|
+
|
|
14
|
+
rails generate doorkeeper:migration
|
|
15
|
+
|
|
16
|
+
And run
|
|
17
|
+
|
|
18
|
+
rake db:migrate
|
|
19
|
+
|
|
20
|
+
Step 3.
|
|
21
|
+
That's it, that's all. Enjoy!
|
|
22
|
+
|
|
23
|
+
===============================================================================
|
|
24
|
+
|
data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb.erb
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class AddOwnerToApplication < ActiveRecord::Migration<%= migration_version %>
|
|
4
|
+
def change
|
|
5
|
+
add_column :oauth_applications, :owner_id, :bigint, null: true
|
|
6
|
+
add_column :oauth_applications, :owner_type, :string, null: true
|
|
7
|
+
add_index :oauth_applications, [:owner_id, :owner_type]
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class AddPreviousRefreshTokenToAccessTokens < ActiveRecord::Migration<%= migration_version %>
|
|
4
|
+
def change
|
|
5
|
+
add_column(
|
|
6
|
+
:oauth_access_tokens,
|
|
7
|
+
:previous_refresh_token,
|
|
8
|
+
:string,
|
|
9
|
+
default: "",
|
|
10
|
+
null: false
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class EnablePkce < ActiveRecord::Migration<%= migration_version %>
|
|
4
|
+
def change
|
|
5
|
+
add_column :oauth_access_grants, :code_challenge, :string, null: true
|
|
6
|
+
add_column :oauth_access_grants, :code_challenge_method, :string, null: true
|
|
7
|
+
end
|
|
8
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class EnablePolymorphicResourceOwner < ActiveRecord::Migration<%= migration_version %>
|
|
4
|
+
def change
|
|
5
|
+
add_column :oauth_access_tokens, :resource_owner_type, :string
|
|
6
|
+
add_column :oauth_access_grants, :resource_owner_type, :string
|
|
7
|
+
change_column_null :oauth_access_grants, :resource_owner_type, false
|
|
8
|
+
|
|
9
|
+
add_index :oauth_access_tokens,
|
|
10
|
+
[:resource_owner_id, :resource_owner_type],
|
|
11
|
+
name: 'polymorphic_owner_oauth_access_tokens'
|
|
12
|
+
|
|
13
|
+
add_index :oauth_access_grants,
|
|
14
|
+
[:resource_owner_id, :resource_owner_type],
|
|
15
|
+
name: 'polymorphic_owner_oauth_access_grants'
|
|
16
|
+
end
|
|
17
|
+
end
|