From 84793fadbb49d60ae3e2b7412078520b3bde3484 Mon Sep 17 00:00:00 2001 From: Kat <54268893+kosiakkatrina@users.noreply.github.com> Date: Wed, 20 Nov 2024 12:53:30 +0000 Subject: [PATCH] Add a page to view the download --- app/controllers/csv_downloads_controller.rb | 7 ++ app/jobs/email_csv_job.rb | 3 +- app/jobs/scheme_email_csv_job.rb | 2 +- app/policies/csv_download_policy.rb | 4 ++ app/views/csv_downloads/show.html.erb | 10 +++ config/routes.rb | 1 + .../requests/csv_downloads_controller_spec.rb | 68 +++++++++++++++++++ 7 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 app/views/csv_downloads/show.html.erb diff --git a/app/controllers/csv_downloads_controller.rb b/app/controllers/csv_downloads_controller.rb index c78cf5860..25f70026f 100644 --- a/app/controllers/csv_downloads_controller.rb +++ b/app/controllers/csv_downloads_controller.rb @@ -1,6 +1,13 @@ class CsvDownloadsController < ApplicationController before_action :authenticate_user! + def show + @csv_download = CsvDownload.find(params[:id]) + authorize @csv_download + + return render "errors/download_link_expired" if @csv_download.expired? + end + def download csv_download = CsvDownload.find(params[:id]) authorize csv_download diff --git a/app/jobs/email_csv_job.rb b/app/jobs/email_csv_job.rb index 05e6c0cbb..dbdc9a99b 100644 --- a/app/jobs/email_csv_job.rb +++ b/app/jobs/email_csv_job.rb @@ -30,7 +30,8 @@ class EmailCsvJob < ApplicationJob storage_service.write_file(filename, BYTE_ORDER_MARK + csv_string) csv_download = CsvDownload.create!(user:, organisation: user.organisation, filename:, download_type: log_type, expiration_time: EXPIRATION_TIME) - url = download_csv_download_url(csv_download.id, host: ENV["APP_HOST"]) + binding.pry + url = csv_download_url(csv_download.id, host: ENV["APP_HOST"]) CsvDownloadMailer.new.send_csv_download_mail(user, url, EXPIRATION_TIME) end diff --git a/app/jobs/scheme_email_csv_job.rb b/app/jobs/scheme_email_csv_job.rb index 50c5119a3..803d3dce3 100644 --- a/app/jobs/scheme_email_csv_job.rb +++ b/app/jobs/scheme_email_csv_job.rb @@ -33,7 +33,7 @@ class SchemeEmailCsvJob < ApplicationJob storage_service.write_file(filename, BYTE_ORDER_MARK + csv_string) csv_download = CsvDownload.create!(user:, organisation: user.organisation, filename:, download_type:, expiration_time: EXPIRATION_TIME) - url = download_csv_download_url(csv_download.id, host: ENV["APP_HOST"]) + url = csv_download_url(csv_download.id, host: ENV["APP_HOST"]) CsvDownloadMailer.new.send_csv_download_mail(user, url, EXPIRATION_TIME) end diff --git a/app/policies/csv_download_policy.rb b/app/policies/csv_download_policy.rb index 72d815b58..04471ccd0 100644 --- a/app/policies/csv_download_policy.rb +++ b/app/policies/csv_download_policy.rb @@ -6,6 +6,10 @@ class CsvDownloadPolicy @csv_download = csv_download end + def show? + @current_user == @csv_download.user || @current_user.support? || @current_user.organisation == @csv_download.organisation + end + def download? @current_user == @csv_download.user || @current_user.support? || @current_user.organisation == @csv_download.organisation end diff --git a/app/views/csv_downloads/show.html.erb b/app/views/csv_downloads/show.html.erb new file mode 100644 index 000000000..96fe28093 --- /dev/null +++ b/app/views/csv_downloads/show.html.erb @@ -0,0 +1,10 @@ +<% title = "Downlaod CSV file" %> +<% content_for :title, title %> + +
Filename: <%= @csv_download.filename%>
+ <%= govuk_button_link_to "Download CSV", download_csv_download_path(@csv_download) %> +