Fix result assets download for shareable links [SCI-9542] (#6460)

This commit is contained in:
ajugo 2023-10-17 11:35:16 +02:00 committed by GitHub
parent 80ccd0039c
commit 9f1c668a10
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 17 additions and 43 deletions

View file

@ -4,29 +4,25 @@ class MyModuleShareableLinksController < ApplicationController
before_action :load_my_module, except: %i(protocol_show
repository_index_dt
repository_snapshot_index_dt
download_step_asset
download_result_asset
download_asset
results_show)
before_action :check_view_permissions, only: :show
before_action :check_manage_permissions, except: %i(protocol_show
repository_index_dt
repository_snapshot_index_dt
download_step_asset
download_result_asset
download_asset
results_show)
before_action :shareable_link_load_my_module, only: %i(protocol_show
repository_index_dt
repository_snapshot_index_dt
download_step_asset
download_result_asset
download_asset
results_show)
before_action :load_repository, only: :repository_index_dt
before_action :load_repository_snapshot, only: :repository_snapshot_index_dt
skip_before_action :authenticate_user!, only: %i(protocol_show
repository_index_dt
repository_snapshot_index_dt
download_step_asset
download_result_asset
download_asset
results_show)
skip_before_action :verify_authenticity_token, only: %i(protocol_show
repository_index_dt
@ -98,17 +94,9 @@ class MyModuleShareableLinksController < ApplicationController
render 'repository_rows/simple_view_index'
end
def download_step_asset
@asset = @my_module.assets_in_steps.find_by(id: params[:id])
return render_404 if @asset.blank?
redirect_to @asset.file.url(expires_in: Constants::URL_SHORT_EXPIRE_TIME.minutes, disposition: 'attachment'),
allow_other_host: true
end
def download_result_asset
@asset = @my_module.assets_in_results.find_by(id: params[:id])
def download_asset
@asset = @my_module.assets_in_steps.find_by(id: params[:id]) ||
@my_module.assets_in_results.find_by(id: params[:id])
return render_404 if @asset.blank?

View file

@ -71,7 +71,7 @@ class MyModule < ApplicationRecord
has_many :protocols, inverse_of: :my_module, dependent: :destroy
has_many :steps, through: :protocols
has_many :assets_in_steps, class_name: 'Asset', source: :assets, through: :steps
has_many :assets_in_results, class_name: 'Asset', source: :asset, through: :results
has_many :assets_in_results, class_name: 'Asset', source: :assets, through: :results
# Associations for old activity type
has_many :activities, inverse_of: :my_module

View file

@ -52,7 +52,7 @@
<% end %>
<% end %>
<% if step.step_assets.present? %>
<%= render partial: "shareable_links/my_modules/attachments", locals: { attachments: step.assets, step: step } %>
<%= render partial: "shareable_links/my_modules/attachments", locals: { attachments: step.assets } %>
<% end %>
</div>
</div>

View file

@ -34,7 +34,7 @@
<% end %>
<% end %>
<% if result.result_assets.present? %>
<%= render partial: "shareable_links/my_modules/attachments", locals: { attachments: result.assets, step: result } %>
<%= render partial: "shareable_links/my_modules/attachments", locals: { attachments: result.assets } %>
<% end %>
</div>
</div>

View file

@ -5,7 +5,7 @@
<ul class="dropdown-menu dropdown-menu-right rounded !p-2.5 sn-shadow-menu-sm" aria-labelledby="dropdownAssetContextMenu">
<li>
<%= link_to shared_protocol_asset_download_path(@shareable_link.uuid, asset), data: { turbolinks: false }, class: "!px-3 !py-2.5 hover:!bg-sn-super-light-blue !text-sn-blue" do %>
<%= link_to shared_asset_download_path(@shareable_link.uuid, asset), class: '!px-3 !py-2.5 hover:!bg-sn-super-light-blue !text-sn-blue', data: { turbolinks: false } do %>
<%= t('Download') %>
<% end %>
</li>

View file

@ -10,20 +10,9 @@
<div class="modal-header">
<span class="file-name"><%= asset.file.metadata[:name] || asset.file_name %></span>
<div class="sci-btn-group">
<% if asset.step.present? %>
<%= link_to shared_protocol_asset_download_path(@shareable_link.uuid, asset),
class: 'btn btn-light file-download-link',
data: { turbolinks: false } do %>
<span class="sn-icon sn-icon-export"></span>
<%= t('Download') %>
<% end %>
<% elsif asset.result.present? %>
<%= link_to shared_protocol_result_asset_download_path(@shareable_link.uuid, asset),
class: 'btn btn-light file-download-link',
data: { turbolinks: false } do %>
<span class="sn-icon sn-icon-export"></span>
<%= t('Download') %>
<% end %>
<%= link_to shared_asset_download_path(@shareable_link.uuid, asset), class: 'btn btn-light file-download-link', data: { turbolinks: false } do %>
<span class="sn-icon sn-icon-export"></span>
<%= t('Download') %>
<% end %>
<button type="button" class="btn icon-btn btn-light" data-dismiss="modal"><span class="sn-icon sn-icon-close"></span></button>
</div>

View file

@ -35,7 +35,7 @@
<%= number_to_human_size(asset.file_size) %>
</div>
<div class="absolute bottom-4 w-[184px] grid grid-cols-[repeat(4,_2.5rem)] justify-between">
<%= link_to shared_protocol_asset_download_path(@shareable_link.uuid, asset), class: "btn btn-light icon-btn thumbnail-action-btn",data: { turbolinks: false } do %>
<%= link_to shared_asset_download_path(@shareable_link.uuid, asset), class: 'btn btn-light icon-btn thumbnail-action-btn', data: { turbolinks: false } do %>
<span class="sn-icon sn-icon-export"></span>
<% end %>
</div>

View file

@ -979,11 +979,8 @@ Rails.application.routes.draw do
to: 'my_module_shareable_links#protocol_show',
as: :shared_protocol
get '/shared/:uuid/protocol/asset/:id/download',
to: 'my_module_shareable_links#download_step_asset',
as: :shared_protocol_asset_download
get '/shared/:uuid/protocol/asset/:id/download_result',
to: 'my_module_shareable_links#download_result_asset',
as: :shared_protocol_result_asset_download
to: 'my_module_shareable_links#download_asset',
as: :shared_asset_download
get '/shared/:uuid/protocol/results',
to: 'my_module_shareable_links#results_show',
as: :shared_protocol_results