about summary refs log tree commit diff
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2023-03-27 17:07:37 +0200
committerGitHub <noreply@github.com>2023-03-27 17:07:37 +0200
commite084b5b82da703dac3ade7480286e847c5c1c2cd (patch)
tree24864f286a8ac574fa32574ec558681f297676d3
parentddb769f0b84d4bcff22472f236a4ec74c631d0a6 (diff)
Fix user archive takeout when using OpenStack Swift or S3 providers with no ACL support (#24200)
-rw-r--r--app/controllers/backups_controller.rb6
-rw-r--r--app/models/backup.rb2
-rw-r--r--config/initializers/paperclip.rb1
3 files changed, 7 insertions, 2 deletions
diff --git a/app/controllers/backups_controller.rb b/app/controllers/backups_controller.rb
index 2f4b400b8..0687b62c5 100644
--- a/app/controllers/backups_controller.rb
+++ b/app/controllers/backups_controller.rb
@@ -13,7 +13,11 @@ class BackupsController < ApplicationController
     when :s3
       redirect_to @backup.dump.expiring_url(10)
     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
       redirect_to full_asset_url(@backup.dump.url)
     end
diff --git a/app/models/backup.rb b/app/models/backup.rb
index dca06eb58..5feb31d7d 100644
--- a/app/models/backup.rb
+++ b/app/models/backup.rb
@@ -18,6 +18,6 @@
 class Backup < ApplicationRecord
   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/
 end
diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb
index 9282c941d..bd37f6709 100644
--- a/config/initializers/paperclip.rb
+++ b/config/initializers/paperclip.rb
@@ -130,6 +130,7 @@ elsif ENV['SWIFT_ENABLED'] == 'true'
       openstack_domain_name: ENV.fetch('SWIFT_DOMAIN_NAME') { 'default' },
       openstack_region: ENV['SWIFT_REGION'],
       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' },