From c21d291c30507bb1ef5f2ea6ffed7f940c7d2e44 Mon Sep 17 00:00:00 2001 From: John Ferlito Date: Sun, 13 Oct 2024 21:07:28 +1100 Subject: [PATCH] Don't allow download of archived files --- app/controllers/essences_controller.rb | 16 +++++++++++++++- app/models/essence.rb | 4 ++++ app/views/essences/show.html.haml | 6 ++++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/controllers/essences_controller.rb b/app/controllers/essences_controller.rb index af935d6b..c4fd6c05 100644 --- a/app/controllers/essences_controller.rb +++ b/app/controllers/essences_controller.rb @@ -23,6 +23,13 @@ def show end def download + if !@current_user.admin? && @essence.is_archived? + flash[:error] = 'This file is archived and can only be downloaded by admins' + redirect_to [@collection, @item, @essence] + + return + end + Download.create! user: current_user, essence: @essence location = Nabu::Catalog.instance.essence_url(@essence, as_attachment: true) @@ -32,6 +39,13 @@ def download end def display + if !@current_user.admin? && @essence.is_archived? + flash[:error] = 'This file is archived and can only be displayed to admins' + redirect_to [@collection, @item, @essence] + + return + end + location = Nabu::Catalog.instance.essence_url(@essence) raise ActionController::RoutingError, 'Essence file not found' unless location @@ -71,6 +85,6 @@ def essence_params def find_essence - @essence = Essence.includes(:item => { item_agents: %i[agent_role user] }).find(params[:id]) + @essence = Essence.includes(item: { item_agents: %i[agent_role user] }).find(params[:id]) end end diff --git a/app/models/essence.rb b/app/models/essence.rb index db184ed0..d0439f3f 100644 --- a/app/models/essence.rb +++ b/app/models/essence.rb @@ -109,6 +109,10 @@ def title filename end + def is_archived? + filename.ends_with?('.mxf') || filename.ends_with?('.mkv') + end + def full_path # TODO: probably want to change this to be filename at some point, non-urgent though "#{item.full_path}/essences/#{id}" diff --git a/app/views/essences/show.html.haml b/app/views/essences/show.html.haml index b5a40fc9..92139d17 100644 --- a/app/views/essences/show.html.haml +++ b/app/views/essences/show.html.haml @@ -67,7 +67,9 @@ %tr %td.empty %td.empty - - if can? :download, @essence + - if admin_user_signed_in? + = link_to 'Download', download_collection_item_essence_path(@collection, @item, @essence), download: true + - elsif !@essence.is_archived? && can?(:download, @essence) = link_to 'Download', download_collection_item_essence_path(@collection, @item, @essence), download: true - else %p No access rights to download essence. @@ -79,7 +81,7 @@ %fieldset %legend Preview #media_item - - if can? :display, @essence + - if !@essence.is_archived? && can?(:display, @essence) - case @essence.mimetype - when /^image\/(jpeg|png|gif|tiff|bmp)/ = image_tag display_collection_item_essence_path(@collection, @item, @essence)