allow to resent copy email

This commit is contained in:
Pete Matsyburka
2024-02-25 02:00:18 +02:00
parent 2bd023e5d0
commit fcd40308ee
14 changed files with 103 additions and 65 deletions
@@ -4,10 +4,20 @@ class SubmissionsDownloadController < ApplicationController
skip_before_action :authenticate_user!
skip_authorization_check
TTL = 20.minutes
TTL = 40.minutes
FILES_TTL = 5.minutes
def index
submitter = Submitter.find_by!(slug: params[:submitter_slug])
submitter = Submitter.find_signed(params[:sig], purpose: :download_completed) if params[:sig].present?
signature_valid =
if submitter&.slug == params[:submitter_slug]
true
else
submitter = nil
end
submitter ||= Submitter.find_by!(slug: params[:submitter_slug])
Submissions::EnsureResultGenerated.call(submitter)
@@ -17,18 +27,24 @@ class SubmissionsDownloadController < ApplicationController
return head :not_found unless last_submitter.completed_at?
if last_submitter.completed_at < TTL.ago &&
(current_user.nil? || !current_user.account.submitters.exists?(id: last_submitter.id))
if last_submitter.completed_at < TTL.ago && !signature_valid && !current_user_submitter?(last_submitter)
Rollbar.info("TTL: #{last_submitter.id}") if defined?(Rollbar)
return head :not_found
end
urls =
Submitters.select_attachments_for_download(last_submitter).map do |attachment|
ActiveStorage::Blob.proxy_url(attachment.blob)
end
render json: build_urls(last_submitter)
end
render json: urls
private
def current_user_submitter?(submitter)
current_user && current_user.account.submitters.exists?(id: submitter.id)
end
def build_urls(submitter)
Submitters.select_attachments_for_download(submitter).map do |attachment|
ActiveStorage::Blob.proxy_url(attachment.blob, expires_at: FILES_TTL.minutes.from_now.to_i)
end
end
end