Fix user archive takeout when using OpenStack Swift or S3 providers with no ACL support (#24200)

This commit is contained in:
Claire 2023-03-27 17:07:37 +02:00 committed by GitHub
parent ddb769f0b8
commit e084b5b82d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 2 deletions

View File

@ -13,7 +13,11 @@ class BackupsController < ApplicationController
when :s3 when :s3
redirect_to @backup.dump.expiring_url(10) redirect_to @backup.dump.expiring_url(10)
when :fog when :fog
redirect_to @backup.dump.expiring_url(Time.now.utc + 10) if Paperclip::Attachment.default_options.dig(:storage, :fog_credentials, :openstack_temp_url_key).present?
redirect_to @backup.dump.expiring_url(Time.now.utc + 10)
else
redirect_to full_asset_url(@backup.dump.url)
end
when :filesystem when :filesystem
redirect_to full_asset_url(@backup.dump.url) redirect_to full_asset_url(@backup.dump.url)
end end

View File

@ -18,6 +18,6 @@
class Backup < ApplicationRecord class Backup < ApplicationRecord
belongs_to :user, inverse_of: :backups belongs_to :user, inverse_of: :backups
has_attached_file :dump, s3_permissions: 'private' has_attached_file :dump, s3_permissions: ->(*) { ENV['S3_PERMISSION'] == '' ? nil : 'private' }
validates_attachment_content_type :dump, content_type: /\Aapplication/ validates_attachment_content_type :dump, content_type: /\Aapplication/
end end

View File

@ -130,6 +130,7 @@ elsif ENV['SWIFT_ENABLED'] == 'true'
openstack_domain_name: ENV.fetch('SWIFT_DOMAIN_NAME') { 'default' }, openstack_domain_name: ENV.fetch('SWIFT_DOMAIN_NAME') { 'default' },
openstack_region: ENV['SWIFT_REGION'], openstack_region: ENV['SWIFT_REGION'],
openstack_cache_ttl: ENV.fetch('SWIFT_CACHE_TTL') { 60 }, openstack_cache_ttl: ENV.fetch('SWIFT_CACHE_TTL') { 60 },
openstack_temp_url_key: ENV['SWIFT_TEMP_URL_KEY'],
}, },
fog_file: { 'Cache-Control' => 'public, max-age=315576000, immutable' }, fog_file: { 'Cache-Control' => 'public, max-age=315576000, immutable' },