|  |  | @ -28,7 +28,7 @@ class SubmissionsPreviewController < ApplicationController | 
			
		
	
		
		
			
				
					
					|  |  |  |       raise ActionController::RoutingError, I18n.t('not_found') |  |  |  |       raise ActionController::RoutingError, I18n.t('not_found') | 
			
		
	
		
		
			
				
					
					|  |  |  |     end |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     if !submission_valid_ttl?(@submission) && !signature_valid |  |  |  |     if use_signature?(@submission) && !signature_valid | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       Rollbar.info("TTL: #{@submission.id}") if defined?(Rollbar) |  |  |  |       Rollbar.info("TTL: #{@submission.id}") if defined?(Rollbar) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       return redirect_to submissions_preview_completed_path(@submission.slug) |  |  |  |       return redirect_to submissions_preview_completed_path(@submission.slug) | 
			
		
	
	
		
		
			
				
					|  |  | @ -48,9 +48,15 @@ class SubmissionsPreviewController < ApplicationController | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   private |  |  |  |   private | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   def submission_valid_ttl?(submission) |  |  |  |   def use_signature?(submission) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     return true if current_user && current_user.account.submissions.exists?(id: submission.id) |  |  |  |     return false if current_user && can?(:read, submission) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     return true if submission.submitters.any? { |e| e.preferences['require_phone_2fa'] } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     return true if submission.template&.preferences&.dig('require_phone_2fa') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     !submission_valid_ttl?(submission) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   end | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   def submission_valid_ttl?(submission) | 
			
		
	
		
		
			
				
					
					|  |  |  |     last_submitter = submission.submitters.select(&:completed_at?).max_by(&:completed_at) |  |  |  |     last_submitter = submission.submitters.select(&:completed_at?).max_by(&:completed_at) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     last_submitter && last_submitter.completed_at > TTL.ago |  |  |  |     last_submitter && last_submitter.completed_at > TTL.ago | 
			
		
	
	
		
		
			
				
					|  |  | 
 |