Files
dunlop-core/app/controllers/dunlop/target_files_controller.rb
2018-01-20 13:02:44 -03:00

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