Better exception handling

This commit is contained in:
Karel Picman 2016-01-15 14:08:40 +01:00
parent 60e7fb2ad4
commit 5879b4b21a

View File

@ -34,17 +34,14 @@ class DmsfFilesController < ApplicationController
helper :dmsf_workflows
def view
if params[:download].blank?
@revision = @file.last_revision
else
@revision = DmsfFileRevision.find(params[:download].to_i)
if @revision.file != @file
render_403
return
end
end
check_project(@revision.file)
begin
if params[:download].blank?
@revision = @file.last_revision
else
@revision = DmsfFileRevision.find(params[:download].to_i)
raise DmsfAccessError if @revision.file != @file
end
check_project(@revision.file)
raise ActionController::MissingFile if @file.deleted
log_activity('downloaded')
access = DmsfFileRevisionAccess.new
@ -56,8 +53,12 @@ class DmsfFilesController < ApplicationController
send_file(@revision.disk_file,
:filename => filename_for_content_disposition(@revision.formatted_name(member ? member.title_format : nil)),
:type => @revision.detect_content_type,
:disposition => 'inline')
rescue ActionController::MissingFile
:disposition => 'inline')
rescue DmsfAccessError => e
Rails.logger.error e.message
render_403
rescue Exception => e
Rails.logger.error e.message
render_404
end
end
@ -65,17 +66,14 @@ class DmsfFilesController < ApplicationController
def show
# The download is put here to provide more clear and usable links
if params.has_key?(:download)
if params[:download].blank?
@revision = @file.last_revision
else
@revision = DmsfFileRevision.find(params[:download].to_i)
if @revision.file != @file
render_403
return
end
end
check_project(@revision.file)
begin
if params[:download].blank?
@revision = @file.last_revision
else
@revision = DmsfFileRevision.find(params[:download].to_i)
raise DmsfAccessError if @revision.file != @file
end
check_project(@revision.file)
raise ActionController::MissingFile if @revision.file.deleted
log_activity('downloaded')
access = DmsfFileRevisionAccess.new
@ -88,7 +86,11 @@ class DmsfFilesController < ApplicationController
:filename => filename_for_content_disposition(@revision.formatted_name(member ? member.title_format : nil)),
:type => @revision.detect_content_type,
:disposition => 'attachment')
rescue ActionController::MissingFile
rescue DmsfAccessError => e
Rails.logger.error e.message
render_403
rescue Exception => e
Rails.logger.error e.message
render_404
end
return