Skip to content

Commit

Permalink
add foodcoop scope to activestorage generated secret
Browse files Browse the repository at this point in the history
  • Loading branch information
mortbauer committed Feb 19, 2024
1 parent f4a4528 commit efb27f2
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions config/initializers/active_storage_foodcoop_path.rb
@@ -1,15 +1,57 @@
require 'active_storage/service/disk_service'

module FoodsoftActiveStorageDiskController
def self.included(base) # :nodoc:
base.class_eval do
def show
if key = decode_verified_key
# puts '--------------------------------------FoodsoftActiveStorageDiskController: ' + key[:scope], key.inspect
FoodsoftConfig.select_foodcoop(key[:scope])
serve_file named_disk_service(key[:service_name]).path_for(key[:key]), content_type: key[:content_type], disposition: key[:disposition]
else
head :not_found
end
rescue Errno::ENOENT
head :not_found
end
end
end
end

module FoodsoftActiveStorageDiskService
def self.included(base) # :nodoc:
base.class_eval do
def path_for(key)
# puts 'FoodsoftActiveStorageDiskService------------------: '+FoodsoftConfig.scope
File.join root, FoodsoftConfig.scope, folder_for(key), key
end
def generate_url(key, expires_in:, filename:, content_type:, disposition:)

Check failure on line 28 in config/initializers/active_storage_foodcoop_path.rb

View workflow job for this annotation

GitHub Actions / test

Layout/EmptyLineBetweenDefs: Expected 1 empty line between method definitions; found 0.
# puts 'AAAAAAAAAAAAAA generate_url SCOPE: '+FoodsoftConfig.scope
# puts 'AAAAAAAAAAAAAA', ActiveStorage.verifier.inspect
content_disposition = content_disposition_with(type: disposition, filename: filename)
verified_key_with_expiration = ActiveStorage.verifier.generate(
{
key: key,
scope: FoodsoftConfig.scope,
disposition: content_disposition,
content_type: content_type,
service_name: name
},
expires_in: expires_in,
purpose: :blob_key
)

if url_options.blank?

Check failure on line 44 in config/initializers/active_storage_foodcoop_path.rb

View workflow job for this annotation

GitHub Actions / test

Style/IfUnlessModifier: Favor modifier `if` usage when having a single-line body. Another good alternative is the usage of control flow `&&`/`||`.
raise ArgumentError, "Cannot generate URL for #{filename} using Disk service, please set ActiveStorage::Current.url_options."
end

url_helpers.rails_disk_service_url(verified_key_with_expiration, filename: filename, **url_options)
end
end
end
end

ActiveSupport.on_load(:after_initialize) do
ActiveStorage::Service::DiskService.include FoodsoftActiveStorageDiskService
ActiveStorage::DiskController.include FoodsoftActiveStorageDiskController
end

0 comments on commit efb27f2

Please sign in to comment.