make public storage and direct upload optional
This commit is contained in:
@@ -7,7 +7,14 @@ module Api
|
||||
def create
|
||||
submitter = Submitter.find_by!(slug: params[:submitter_slug])
|
||||
|
||||
blob = ActiveStorage::Blob.find_signed(params[:blob_signed_id])
|
||||
blob =
|
||||
if (file = params[:file])
|
||||
ActiveStorage::Blob.create_and_upload!(io: file.open,
|
||||
filename: file.original_filename,
|
||||
content_type: file.content_type)
|
||||
else
|
||||
ActiveStorage::Blob.find_signed(params[:blob_signed_id])
|
||||
end
|
||||
|
||||
attachment = ActiveStorage::Attachment.create!(
|
||||
blob:,
|
||||
|
||||
@@ -6,9 +6,7 @@ module Api
|
||||
@template = current_account.templates.find(params[:template_id])
|
||||
|
||||
documents =
|
||||
params[:blobs].map do |blob|
|
||||
blob = ActiveStorage::Blob.find_signed(blob[:signed_id])
|
||||
|
||||
find_or_create_blobs.map do |blob|
|
||||
document = @template.documents.create!(blob:)
|
||||
|
||||
Templates::ProcessDocument.call(document)
|
||||
@@ -27,5 +25,19 @@ module Api
|
||||
)
|
||||
}
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def find_or_create_blobs
|
||||
blobs = params[:blobs]&.map do |attrs|
|
||||
ActiveStorage::Blob.find_signed(attrs[:signed_id])
|
||||
end
|
||||
|
||||
blobs || params[:files].map do |file|
|
||||
ActiveStorage::Blob.create_and_upload!(io: file.open,
|
||||
filename: file.original_filename,
|
||||
content_type: file.content_type)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,21 +2,17 @@
|
||||
|
||||
class EsignSettingsController < ApplicationController
|
||||
def create
|
||||
blobs =
|
||||
params[:blob_signed_ids].map do |sid|
|
||||
ActiveStorage::Blob.find_signed(sid)
|
||||
end
|
||||
|
||||
pdfs =
|
||||
blobs.map do |blob|
|
||||
HexaPDF::Document.new(io: StringIO.new(blob.download))
|
||||
params[:files].map do |file|
|
||||
HexaPDF::Document.new(io: file.open)
|
||||
end
|
||||
|
||||
certs = Accounts.load_signing_certs(current_account)
|
||||
|
||||
trusted_certs = [certs[:cert], certs[:sub_ca], certs[:root_ca]]
|
||||
|
||||
render turbo_stream: turbo_stream.replace('result', partial: 'result', locals: { pdfs:, blobs:, trusted_certs: })
|
||||
render turbo_stream: turbo_stream.replace('result', partial: 'result',
|
||||
locals: { pdfs:, files: params[:files], trusted_certs: })
|
||||
rescue HexaPDF::MalformedPDFError
|
||||
render turbo_stream: turbo_stream.replace('result', html: helpers.tag.div('Invalid PDF', id: 'result'))
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user