Prevent only using offline_access scope

This commit is contained in:
Emelia Smith 2025-04-10 21:56:22 +02:00
parent 2250aead46
commit 7898619d74
No known key found for this signature in database

View File

@ -19,7 +19,13 @@ class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController
end
def render_success
if skip_authorization? || (matching_token? && !truthy_param?('force_login'))
# FIXME: Find a better way to apply this validation: if the scopes only
# includes offline_access, then it's not valid, since offline_access doesn't
# actually give access to resources:
if pre_auth.scopes.all?('offline_access')
error = Doorkeeper::OAuth::InvalidRequestResponse.new(reason: :offline_access_only, missing_param: nil)
render :error, locals: { error_response: error }, status: 400
elsif skip_authorization? || (matching_token? && !truthy_param?('force_login'))
redirect_or_render authorize_response
elsif Doorkeeper.configuration.api_only
render json: pre_auth