summaryrefslogtreecommitdiffstats
path: root/app/controllers/application_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/application_controller.rb')
-rw-r--r--app/controllers/application_controller.rb20
1 files changed, 15 insertions, 5 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index f5262e6d2..05a4b87fa 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -276,14 +276,24 @@ class ApplicationController < ActionController::Base
self.model_object = model
end
- # Filter for bulk issue operations
+ # Find the issue whose id is the :id parameter
+ # Raises a Unauthorized exception if the issue is not visible
+ def find_issue
+ # Issue.visible.find(...) can not be used to redirect user to the login form
+ # if the issue actually exists but requires authentication
+ @issue = Issue.find(params[:id])
+ raise Unauthorized unless @issue.visible?
+ @project = @issue.project
+ rescue ActiveRecord::RecordNotFound
+ render_404
+ end
+
+ # Find issues with a single :id param or :ids array param
+ # Raises a Unauthorized exception if one of the issues is not visible
def find_issues
@issues = Issue.find_all_by_id(params[:id] || params[:ids])
raise ActiveRecord::RecordNotFound if @issues.empty?
- if @issues.detect {|issue| !issue.visible?}
- deny_access
- return
- end
+ raise Unauthorized if @issues.all?(&:visible?)
@projects = @issues.collect(&:project).compact.uniq
@project = @projects.first if @projects.size == 1
rescue ActiveRecord::RecordNotFound