24 lines
696 B
Ruby
24 lines
696 B
Ruby
# frozen_string_literal: true
|
|
|
|
module StaticObjectExternalStorage
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
include ApplicationHelper
|
|
end
|
|
|
|
def redirect_to_external_storage
|
|
return if external_storage_request?
|
|
|
|
redirect_to external_storage_url_or_path(request.fullpath, project)
|
|
end
|
|
|
|
def external_storage_request?
|
|
header_token = request.headers['X-Gitlab-External-Storage-Token']
|
|
return false unless header_token.present?
|
|
|
|
external_storage_token = Gitlab::CurrentSettings.static_objects_external_storage_auth_token
|
|
ActiveSupport::SecurityUtils.secure_compare(header_token, external_storage_token) ||
|
|
raise(Gitlab::Access::AccessDeniedError)
|
|
end
|
|
end
|