diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index 395e7d54..27bfb5a3 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -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