mirror of https://github.com/docusealco/docuseal
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							26 lines
						
					
					
						
							907 B
						
					
					
				
			
		
		
	
	
							26 lines
						
					
					
						
							907 B
						
					
					
				| # frozen_string_literal: true
 | |
| 
 | |
| 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))
 | |
|       end
 | |
| 
 | |
|     cert = EncryptedConfig.find_by(account: current_account, key: EncryptedConfig::ESIGN_CERTS_KEY).value
 | |
| 
 | |
|     trusted_certs = [OpenSSL::X509::Certificate.new(cert['cert']),
 | |
|                      OpenSSL::X509::Certificate.new(cert['sub_ca']),
 | |
|                      OpenSSL::X509::Certificate.new(cert['root_ca'])]
 | |
| 
 | |
|     render turbo_stream: turbo_stream.replace('result', partial: 'result', locals: { pdfs:, blobs:, trusted_certs: })
 | |
|   rescue HexaPDF::MalformedPDFError
 | |
|     render turbo_stream: turbo_stream.replace('result', html: helpers.tag.div('Invalid PDF', id: 'result'))
 | |
|   end
 | |
| end
 |