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.
Files changed (149) hide show
  1. checksums.yaml +7 -0
  2. data/doorkeeper-5.9.3/CHANGELOG.md +1208 -0
  3. data/doorkeeper-5.9.3/MIT-LICENSE +20 -0
  4. data/doorkeeper-5.9.3/README.md +186 -0
  5. data/doorkeeper-5.9.3/app/assets/stylesheets/doorkeeper/admin/application.css +10 -0
  6. data/doorkeeper-5.9.3/app/assets/stylesheets/doorkeeper/application.css +64 -0
  7. data/doorkeeper-5.9.3/app/controllers/doorkeeper/application_controller.rb +14 -0
  8. data/doorkeeper-5.9.3/app/controllers/doorkeeper/application_metal_controller.rb +13 -0
  9. data/doorkeeper-5.9.3/app/controllers/doorkeeper/applications_controller.rb +99 -0
  10. data/doorkeeper-5.9.3/app/controllers/doorkeeper/authorizations_controller.rb +164 -0
  11. data/doorkeeper-5.9.3/app/controllers/doorkeeper/authorized_applications_controller.rb +33 -0
  12. data/doorkeeper-5.9.3/app/controllers/doorkeeper/token_info_controller.rb +25 -0
  13. data/doorkeeper-5.9.3/app/controllers/doorkeeper/tokens_controller.rb +180 -0
  14. data/doorkeeper-5.9.3/app/helpers/doorkeeper/dashboard_helper.rb +21 -0
  15. data/doorkeeper-5.9.3/app/views/doorkeeper/applications/_delete_form.html.erb +6 -0
  16. data/doorkeeper-5.9.3/app/views/doorkeeper/applications/_form.html.erb +59 -0
  17. data/doorkeeper-5.9.3/app/views/doorkeeper/applications/edit.html.erb +5 -0
  18. data/doorkeeper-5.9.3/app/views/doorkeeper/applications/index.html.erb +38 -0
  19. data/doorkeeper-5.9.3/app/views/doorkeeper/applications/new.html.erb +5 -0
  20. data/doorkeeper-5.9.3/app/views/doorkeeper/applications/show.html.erb +63 -0
  21. data/doorkeeper-5.9.3/app/views/doorkeeper/authorizations/error.html.erb +9 -0
  22. data/doorkeeper-5.9.3/app/views/doorkeeper/authorizations/form_post.html.erb +15 -0
  23. data/doorkeeper-5.9.3/app/views/doorkeeper/authorizations/new.html.erb +46 -0
  24. data/doorkeeper-5.9.3/app/views/doorkeeper/authorizations/show.html.erb +7 -0
  25. data/doorkeeper-5.9.3/app/views/doorkeeper/authorized_applications/_delete_form.html.erb +4 -0
  26. data/doorkeeper-5.9.3/app/views/doorkeeper/authorized_applications/index.html.erb +24 -0
  27. data/doorkeeper-5.9.3/app/views/layouts/doorkeeper/admin.html.erb +39 -0
  28. data/doorkeeper-5.9.3/app/views/layouts/doorkeeper/application.html.erb +23 -0
  29. data/doorkeeper-5.9.3/config/locales/en.yml +155 -0
  30. data/doorkeeper-5.9.3/lib/doorkeeper/config/abstract_builder.rb +28 -0
  31. data/doorkeeper-5.9.3/lib/doorkeeper/config/option.rb +82 -0
  32. data/doorkeeper-5.9.3/lib/doorkeeper/config/validations.rb +65 -0
  33. data/doorkeeper-5.9.3/lib/doorkeeper/config.rb +721 -0
  34. data/doorkeeper-5.9.3/lib/doorkeeper/engine.rb +38 -0
  35. data/doorkeeper-5.9.3/lib/doorkeeper/errors.rb +85 -0
  36. data/doorkeeper-5.9.3/lib/doorkeeper/grant_flow/fallback_flow.rb +15 -0
  37. data/doorkeeper-5.9.3/lib/doorkeeper/grant_flow/flow.rb +44 -0
  38. data/doorkeeper-5.9.3/lib/doorkeeper/grant_flow/registry.rb +50 -0
  39. data/doorkeeper-5.9.3/lib/doorkeeper/grant_flow.rb +45 -0
  40. data/doorkeeper-5.9.3/lib/doorkeeper/grape/authorization_decorator.rb +19 -0
  41. data/doorkeeper-5.9.3/lib/doorkeeper/grape/helpers.rb +58 -0
  42. data/doorkeeper-5.9.3/lib/doorkeeper/helpers/controller.rb +91 -0
  43. data/doorkeeper-5.9.3/lib/doorkeeper/models/access_grant_mixin.rb +124 -0
  44. data/doorkeeper-5.9.3/lib/doorkeeper/models/access_token_mixin.rb +526 -0
  45. data/doorkeeper-5.9.3/lib/doorkeeper/models/application_mixin.rb +96 -0
  46. data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/accessible.rb +15 -0
  47. data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/expirable.rb +36 -0
  48. data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/expiration_time_sql_math.rb +96 -0
  49. data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/orderable.rb +15 -0
  50. data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/ownership.rb +18 -0
  51. data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/polymorphic_resource_owner.rb +29 -0
  52. data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/resource_ownerable.rb +47 -0
  53. data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/reusable.rb +19 -0
  54. data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/revocable.rb +31 -0
  55. data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/scopes.rb +27 -0
  56. data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/secret_storable.rb +106 -0
  57. data/doorkeeper-5.9.3/lib/doorkeeper/models/concerns/write_to_primary.rb +57 -0
  58. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/authorization/code.rb +76 -0
  59. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/authorization/context.rb +17 -0
  60. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/authorization/token.rb +100 -0
  61. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/authorization/uri_builder.rb +33 -0
  62. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/authorization_code_request.rb +125 -0
  63. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/base_request.rb +68 -0
  64. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/base_response.rb +31 -0
  65. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/client/credentials.rb +34 -0
  66. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/client.rb +28 -0
  67. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/client_credentials/creator.rb +57 -0
  68. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/client_credentials/issuer.rb +48 -0
  69. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/client_credentials/validator.rb +55 -0
  70. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/client_credentials_request.rb +46 -0
  71. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/code_request.rb +25 -0
  72. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/code_response.rb +51 -0
  73. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/error.rb +16 -0
  74. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/error_response.rb +121 -0
  75. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/forbidden_token_response.rb +31 -0
  76. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/helpers/scope_checker.rb +50 -0
  77. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/helpers/unique_token.rb +30 -0
  78. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/helpers/uri_checker.rb +83 -0
  79. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/hooks/context.rb +21 -0
  80. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/invalid_request_response.rb +47 -0
  81. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/invalid_token_response.rb +54 -0
  82. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/nonstandard.rb +39 -0
  83. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/password_access_token_request.rb +75 -0
  84. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/pre_authorization.rb +187 -0
  85. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/refresh_token_request.rb +144 -0
  86. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/scopes.rb +134 -0
  87. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/token.rb +66 -0
  88. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/token_introspection.rb +220 -0
  89. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/token_request.rb +25 -0
  90. data/doorkeeper-5.9.3/lib/doorkeeper/oauth/token_response.rb +38 -0
  91. data/doorkeeper-5.9.3/lib/doorkeeper/oauth.rb +13 -0
  92. data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/access_grant.rb +9 -0
  93. data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/access_token.rb +9 -0
  94. data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/application.rb +10 -0
  95. data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/mixins/access_grant.rb +64 -0
  96. data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/mixins/access_token.rb +95 -0
  97. data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/mixins/application.rb +223 -0
  98. data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/redirect_uri_validator.rb +66 -0
  99. data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record/stale_records_cleaner.rb +44 -0
  100. data/doorkeeper-5.9.3/lib/doorkeeper/orm/active_record.rb +41 -0
  101. data/doorkeeper-5.9.3/lib/doorkeeper/rails/helpers.rb +82 -0
  102. data/doorkeeper-5.9.3/lib/doorkeeper/rails/routes/abstract_router.rb +35 -0
  103. data/doorkeeper-5.9.3/lib/doorkeeper/rails/routes/mapper.rb +30 -0
  104. data/doorkeeper-5.9.3/lib/doorkeeper/rails/routes/mapping.rb +40 -0
  105. data/doorkeeper-5.9.3/lib/doorkeeper/rails/routes/registry.rb +45 -0
  106. data/doorkeeper-5.9.3/lib/doorkeeper/rails/routes.rb +110 -0
  107. data/doorkeeper-5.9.3/lib/doorkeeper/rake/db.rake +40 -0
  108. data/doorkeeper-5.9.3/lib/doorkeeper/rake/setup.rake +6 -0
  109. data/doorkeeper-5.9.3/lib/doorkeeper/rake.rb +14 -0
  110. data/doorkeeper-5.9.3/lib/doorkeeper/request/authorization_code.rb +26 -0
  111. data/doorkeeper-5.9.3/lib/doorkeeper/request/client_credentials.rb +17 -0
  112. data/doorkeeper-5.9.3/lib/doorkeeper/request/code.rb +17 -0
  113. data/doorkeeper-5.9.3/lib/doorkeeper/request/password.rb +19 -0
  114. data/doorkeeper-5.9.3/lib/doorkeeper/request/refresh_token.rb +22 -0
  115. data/doorkeeper-5.9.3/lib/doorkeeper/request/strategy.rb +19 -0
  116. data/doorkeeper-5.9.3/lib/doorkeeper/request/token.rb +17 -0
  117. data/doorkeeper-5.9.3/lib/doorkeeper/request.rb +73 -0
  118. data/doorkeeper-5.9.3/lib/doorkeeper/revocable_tokens/revocable_access_token.rb +21 -0
  119. data/doorkeeper-5.9.3/lib/doorkeeper/revocable_tokens/revocable_refresh_token.rb +21 -0
  120. data/doorkeeper-5.9.3/lib/doorkeeper/secret_storing/base.rb +64 -0
  121. data/doorkeeper-5.9.3/lib/doorkeeper/secret_storing/bcrypt.rb +60 -0
  122. data/doorkeeper-5.9.3/lib/doorkeeper/secret_storing/plain.rb +33 -0
  123. data/doorkeeper-5.9.3/lib/doorkeeper/secret_storing/sha256_hash.rb +26 -0
  124. data/doorkeeper-5.9.3/lib/doorkeeper/server.rb +44 -0
  125. data/doorkeeper-5.9.3/lib/doorkeeper/stale_records_cleaner.rb +24 -0
  126. data/doorkeeper-5.9.3/lib/doorkeeper/validations.rb +33 -0
  127. data/doorkeeper-5.9.3/lib/doorkeeper/version.rb +14 -0
  128. data/doorkeeper-5.9.3/lib/doorkeeper.rb +209 -0
  129. data/doorkeeper-5.9.3/lib/generators/doorkeeper/application_owner_generator.rb +33 -0
  130. data/doorkeeper-5.9.3/lib/generators/doorkeeper/confidential_applications_generator.rb +33 -0
  131. data/doorkeeper-5.9.3/lib/generators/doorkeeper/enable_polymorphic_resource_owner_generator.rb +39 -0
  132. data/doorkeeper-5.9.3/lib/generators/doorkeeper/install_generator.rb +22 -0
  133. data/doorkeeper-5.9.3/lib/generators/doorkeeper/migration_generator.rb +32 -0
  134. data/doorkeeper-5.9.3/lib/generators/doorkeeper/pkce_generator.rb +33 -0
  135. data/doorkeeper-5.9.3/lib/generators/doorkeeper/previous_refresh_token_generator.rb +41 -0
  136. data/doorkeeper-5.9.3/lib/generators/doorkeeper/remove_applications_secret_not_null_constraint_generator.rb +33 -0
  137. data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/README +24 -0
  138. data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/add_confidential_to_applications.rb.erb +13 -0
  139. data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb.erb +9 -0
  140. data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/add_previous_refresh_token_to_access_tokens.rb.erb +13 -0
  141. data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/enable_pkce_migration.rb.erb +8 -0
  142. data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/enable_polymorphic_resource_owner_migration.rb.erb +17 -0
  143. data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/initializer.rb +544 -0
  144. data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/migration.rb.erb +99 -0
  145. data/doorkeeper-5.9.3/lib/generators/doorkeeper/templates/remove_applications_secret_not_null_constraint.rb.erb +7 -0
  146. data/doorkeeper-5.9.3/lib/generators/doorkeeper/views_generator.rb +18 -0
  147. data/doorkeeper-5.9.3/vendor/assets/stylesheets/doorkeeper/bootstrap.min.css +6 -0
  148. data/super-smart-kit.gemspec +12 -0
  149. 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,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Doorkeeper
4
+ module VERSION
5
+ # Semantic versioning
6
+ MAJOR = 5
7
+ MINOR = 9
8
+ TINY = 3
9
+ PRE = nil
10
+
11
+ # Full version number
12
+ STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
13
+ end
14
+ 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
@@ -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
+
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddConfidentialToApplications < ActiveRecord::Migration<%= migration_version %>
4
+ def change
5
+ add_column(
6
+ :oauth_applications,
7
+ :confidential,
8
+ :boolean,
9
+ null: false,
10
+ default: true
11
+ )
12
+ end
13
+ end
@@ -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