Module: Doorkeeper

Defined in:
lib/doorkeeper.rb,
lib/doorkeeper/rake.rb,
lib/doorkeeper/oauth.rb,
lib/doorkeeper/config.rb,
lib/doorkeeper/engine.rb,
lib/doorkeeper/errors.rb,
lib/doorkeeper/server.rb,
lib/doorkeeper/request.rb,
lib/doorkeeper/version.rb,
lib/doorkeeper/grant_flow.rb,
lib/doorkeeper/oauth/error.rb,
lib/doorkeeper/oauth/token.rb,
lib/doorkeeper/validations.rb,
lib/doorkeeper/http_fetcher.rb,
lib/doorkeeper/oauth/client.rb,
lib/doorkeeper/oauth/scopes.rb,
lib/doorkeeper/rails/routes.rb,
lib/doorkeeper/request/code.rb,
lib/doorkeeper/config/option.rb,
lib/doorkeeper/grape/helpers.rb,
lib/doorkeeper/rails/helpers.rb,
lib/doorkeeper/request/token.rb,
lib/doorkeeper/document_cache.rb,
lib/doorkeeper/grant_flow/flow.rb,
lib/doorkeeper/request/password.rb,
lib/doorkeeper/request/strategy.rb,
lib/doorkeeper/oauth/nonstandard.rb,
lib/doorkeeper/orm/active_record.rb,
lib/doorkeeper/config/validations.rb,
lib/doorkeeper/helpers/controller.rb,
lib/doorkeeper/oauth/base_request.rb,
lib/doorkeeper/oauth/code_request.rb,
lib/doorkeeper/grant_flow/registry.rb,
lib/doorkeeper/oauth/base_response.rb,
lib/doorkeeper/oauth/code_response.rb,
lib/doorkeeper/oauth/hooks/context.rb,
lib/doorkeeper/oauth/token_request.rb,
lib/doorkeeper/rails/routes/mapper.rb,
lib/doorkeeper/secret_storing/base.rb,
lib/doorkeeper/oauth/error_response.rb,
lib/doorkeeper/oauth/token_response.rb,
lib/doorkeeper/rails/routes/mapping.rb,
lib/doorkeeper/secret_storing/plain.rb,
lib/doorkeeper/client_authentication.rb,
lib/doorkeeper/rails/routes/registry.rb,
lib/doorkeeper/request/refresh_token.rb,
lib/doorkeeper/secret_storing/bcrypt.rb,
lib/doorkeeper/stale_records_cleaner.rb,
lib/doorkeeper/models/concerns/scopes.rb,
lib/doorkeeper/config/abstract_builder.rb,
lib/doorkeeper/oauth/metadata_response.rb,
lib/doorkeeper/oauth/pre_authorization.rb,
app/helpers/doorkeeper/dashboard_helper.rb,
lib/doorkeeper/grant_flow/fallback_flow.rb,
lib/doorkeeper/models/application_mixin.rb,
lib/doorkeeper/models/concerns/reusable.rb,
lib/doorkeeper/oauth/authorization/code.rb,
lib/doorkeeper/models/access_grant_mixin.rb,
lib/doorkeeper/models/access_token_mixin.rb,
lib/doorkeeper/models/concerns/expirable.rb,
lib/doorkeeper/models/concerns/orderable.rb,
lib/doorkeeper/models/concerns/ownership.rb,
lib/doorkeeper/models/concerns/revocable.rb,
lib/doorkeeper/oauth/authorization/token.rb,
lib/doorkeeper/oauth/helpers/uri_checker.rb,
lib/doorkeeper/oauth/token_introspection.rb,
lib/generators/doorkeeper/pkce_generator.rb,
lib/doorkeeper/models/concerns/accessible.rb,
lib/doorkeeper/oauth/helpers/unique_token.rb,
lib/doorkeeper/request/authorization_code.rb,
lib/doorkeeper/request/client_credentials.rb,
lib/doorkeeper/secret_storing/sha256_hash.rb,
lib/generators/doorkeeper/views_generator.rb,
lib/doorkeeper/oauth/authorization/context.rb,
lib/doorkeeper/oauth/helpers/scope_checker.rb,
lib/doorkeeper/oauth/refresh_token_request.rb,
lib/doorkeeper/client_authentication/method.rb,
lib/doorkeeper/oauth/invalid_token_response.rb,
lib/doorkeeper/rails/routes/abstract_router.rb,
lib/generators/doorkeeper/install_generator.rb,
app/controllers/doorkeeper/tokens_controller.rb,
lib/doorkeeper/grape/authorization_decorator.rb,
lib/doorkeeper/orm/active_record/application.rb,
lib/doorkeeper/client_authentication/registry.rb,
lib/doorkeeper/oauth/forbidden_token_response.rb,
lib/doorkeeper/oauth/invalid_request_response.rb,
lib/doorkeeper/orm/active_record/access_grant.rb,
lib/doorkeeper/orm/active_record/access_token.rb,
lib/generators/doorkeeper/migration_generator.rb,
app/controllers/doorkeeper/metadata_controller.rb,
lib/doorkeeper/models/concerns/secret_storable.rb,
lib/doorkeeper/oauth/authorization/uri_builder.rb,
lib/doorkeeper/oauth/client_credentials/issuer.rb,
lib/doorkeeper/models/concerns/write_to_primary.rb,
lib/doorkeeper/oauth/authorization_code_request.rb,
lib/doorkeeper/oauth/client_authentication/none.rb,
lib/doorkeeper/oauth/client_credentials/creator.rb,
lib/doorkeeper/oauth/client_credentials_request.rb,
app/controllers/doorkeeper/token_info_controller.rb,
lib/doorkeeper/client_authentication/credentials.rb,
app/controllers/doorkeeper/application_controller.rb,
lib/doorkeeper/models/concerns/resource_ownerable.rb,
lib/doorkeeper/oauth/client_credentials/validator.rb,
lib/doorkeeper/oauth/resource_indicator_validator.rb,
app/controllers/doorkeeper/applications_controller.rb,
lib/doorkeeper/oauth/password_access_token_request.rb,
app/controllers/doorkeeper/authorizations_controller.rb,
lib/doorkeeper/client_authentication/fallback_method.rb,
lib/doorkeeper/client_authentication/legacy_callable.rb,
lib/generators/doorkeeper/application_owner_generator.rb,
lib/doorkeeper/orm/active_record/stale_records_cleaner.rb,
lib/doorkeeper/revocable_tokens/revocable_access_token.rb,
app/controllers/doorkeeper/application_metal_controller.rb,
lib/doorkeeper/models/concerns/expiration_time_sql_math.rb,
lib/doorkeeper/orm/active_record/redirect_uri_validator.rb,
lib/doorkeeper/revocable_tokens/revocable_refresh_token.rb,
lib/generators/doorkeeper/resource_indicators_generator.rb,
lib/doorkeeper/client_authentication/verified_credentials.rb,
lib/doorkeeper/models/concerns/polymorphic_resource_owner.rb,
lib/doorkeeper/oauth/client_authentication/private_key_jwt.rb,
lib/generators/doorkeeper/grant_reuse_revocation_generator.rb,
lib/generators/doorkeeper/previous_refresh_token_generator.rb,
app/controllers/doorkeeper/authorized_applications_controller.rb,
lib/doorkeeper/oauth/client_authentication/client_secret_post.rb,
lib/generators/doorkeeper/confidential_applications_generator.rb,
lib/doorkeeper/oauth/client_authentication/client_secret_basic.rb,
lib/generators/doorkeeper/enable_polymorphic_resource_owner_generator.rb,
lib/doorkeeper/oauth/client_authentication/private_key_jwt/key_resolver.rb,
lib/doorkeeper/oauth/client_authentication/private_key_jwt/replay_guard.rb,
lib/generators/doorkeeper/remove_applications_secret_not_null_constraint_generator.rb

Overview

Define methods that can be called in any controller that inherits from Doorkeeper::ApplicationMetalController or Doorkeeper::ApplicationController

Defined Under Namespace

Modules: AccessGrantMixin, AccessTokenMixin, ApplicationMixin, ClientAuthentication, DashboardHelper, Errors, Generators, GrantFlow, Grape, Helpers, Models, OAuth, Orm, Rails, Rake, Request, RevocableTokens, SecretStoring, VERSION, Validations Classes: AccessGrant, AccessToken, Application, ApplicationController, ApplicationMetalController, ApplicationOwnerGenerator, ApplicationsController, AuthorizationsController, AuthorizedApplicationsController, ConfidentialApplicationsGenerator, Config, DocumentCache, EnablePolymorphicResourceOwnerGenerator, Engine, GrantReuseRevocationGenerator, HttpFetcher, InstallGenerator, MetadataController, MigrationGenerator, PkceGenerator, PreviousRefreshTokenGenerator, RedirectUriValidator, RemoveApplicationsSecretNotNullConstraintGenerator, ResourceIndicatorsGenerator, Server, StaleRecordsCleaner, TokenInfoController, TokensController

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.orm_adapterObject (readonly)

Returns the value of attribute orm_adapter.



135
136
137
# File 'lib/doorkeeper.rb', line 135

def orm_adapter
  @orm_adapter
end

Class Method Details

.authenticate(request, methods = Doorkeeper.config.access_token_methods) ⇒ Object



209
210
211
# File 'lib/doorkeeper.rb', line 209

def authenticate(request, methods = Doorkeeper.config.access_token_methods)
  OAuth::Token.authenticate(request, *methods)
end

.configurationDoorkeeper::Config Also known as: config

Returns configuration instance.

Returns:



145
146
147
# File 'lib/doorkeeper.rb', line 145

def configuration
  @config || configure
end

.configure(&block) ⇒ Object



137
138
139
140
141
# File 'lib/doorkeeper.rb', line 137

def configure(&block)
  @config = Config::Builder.new(&block).build
  setup
  @config
end

.configured?Boolean

Returns:

  • (Boolean)


149
150
151
# File 'lib/doorkeeper.rb', line 149

def configured?
  !@config.nil?
end

.gem_versionObject



213
214
215
# File 'lib/doorkeeper.rb', line 213

def gem_version
  ::Gem::Version.new(::Doorkeeper::VERSION::STRING)
end

.run_orm_hooksObject



187
188
189
190
191
192
193
194
195
196
197
198
199
# File 'lib/doorkeeper.rb', line 187

def run_orm_hooks
  config.clear_cache!

  if @orm_adapter.respond_to?(:run_hooks)
    @orm_adapter.run_hooks
  else
    ::Kernel.warn <<~MSG.strip_heredoc
      [DOORKEEPER] ORM "#{configuration.orm}" should move all it's setup logic under `#run_hooks` method for
      the #{@orm_adapter.name}. Later versions of Doorkeeper will no longer support `setup_orm_models` and
      `setup_application_owner` API.
    MSG
  end
end

.setupObject



155
156
157
158
159
160
161
162
163
# File 'lib/doorkeeper.rb', line 155

def setup
  setup_orm_adapter

  # Deprecated, will be removed soon
  unless configuration.orm == :active_record
    setup_orm_models
    setup_application_owner
  end
end

.setup_application_ownerObject



205
206
207
# File 'lib/doorkeeper.rb', line 205

def setup_application_owner
  @orm_adapter.initialize_application_owner!
end

.setup_filter_parametersObject



165
166
167
168
169
170
171
172
173
# File 'lib/doorkeeper.rb', line 165

def setup_filter_parameters
  return unless defined?(::Rails) && ::Rails.application && configured?

  parameters = %w[client_secret authentication_token access_token refresh_token]
  parameters << "code" if configuration.grant_flows.include?("authorization_code")
  filter = /^(#{Regexp.union(parameters)})$/
  filter_params = ::Rails.application.config.filter_parameters
  filter_params << filter unless filter_params.include?(filter)
end

.setup_orm_adapterObject



175
176
177
178
179
180
181
182
183
184
185
# File 'lib/doorkeeper.rb', line 175

def setup_orm_adapter
  @orm_adapter = "doorkeeper/orm/#{configuration.orm}".classify.constantize
rescue NameError => e
  raise e, "ORM adapter not found (#{configuration.orm})", <<-ERROR_MSG.strip_heredoc
    [DOORKEEPER] ORM adapter not found (#{configuration.orm}), or there was an error
    trying to load it.

    You probably need to add the related gem for this adapter to work with
    doorkeeper.
  ERROR_MSG
end

.setup_orm_modelsObject



201
202
203
# File 'lib/doorkeeper.rb', line 201

def setup_orm_models
  @orm_adapter.initialize_models!
end