44 lines
1.4 KiB
Ruby
44 lines
1.4 KiB
Ruby
class Dunlop::TargetFilesController < Dunlop::ApplicationController
|
|
skip_authorize_resource if respond_to?(:skip_authorize_resource)
|
|
before_action :find_target_file, except: [:index, :download_latest]
|
|
|
|
def index
|
|
authorize! :index, TargetFile
|
|
@q = TargetFile.where(sti_type: TargetFile.classes.select{|cls| can? :read, cls}.map(&:name)).search(query)
|
|
@q.sorts = "created_at desc" if @q.sorts.empty?
|
|
@target_files = @q.result.page(params[:page]).per(100)
|
|
end
|
|
|
|
def show
|
|
authorize! :read, @target_file
|
|
end
|
|
|
|
def download
|
|
authorize! :download, @target_file
|
|
Dunlop::FileDownload.create user: current_user, file: @target_file
|
|
send_file @target_file.original_file.path
|
|
end
|
|
|
|
def download_latest
|
|
target_file_class = "TargetFile::#{params[:target_file_type].to_s.camelize}".safe_constantize
|
|
@target_file = target_file_class.latest
|
|
return head(:not_found) unless @target_file.present?
|
|
authorize! :download, @target_file
|
|
Dunlop::FileDownload.create user: current_user, file: @target_file
|
|
send_file @target_file.original_file.path
|
|
end
|
|
|
|
def destroy
|
|
authorize! :destroy, @target_file
|
|
@target_file.destroy
|
|
redirect_to dunlop.target_files_path, notice: t('action.destroy.successfull', model: @target_file.class.model_name.human)
|
|
end
|
|
|
|
private
|
|
|
|
def find_target_file
|
|
@target_file = TargetFile.find(params[:id])
|
|
end
|
|
|
|
end
|