]> source.dussan.org Git - redmine.git/commitdiff
Respond with 404 on ActionView::MissingTemplate (#11503).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 13 Aug 2012 18:34:00 +0000 (18:34 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 13 Aug 2012 18:34:00 +0000 (18:34 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10204 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/application_controller.rb
test/integration/application_test.rb

index 5a1774c0464a7e775b8a0ad6d2284908b07b956e..d6efa412423030ad5f8135a3c8d2a1523b896d00 100644 (file)
@@ -39,6 +39,7 @@ class ApplicationController < ActionController::Base
 
   rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token
   rescue_from ::Unauthorized, :with => :deny_access
+  rescue_from ::ActionView::MissingTemplate, :with => :missing_template
 
   include Redmine::Search::Controller
   include Redmine::MenuManager::MenuController
@@ -352,13 +353,17 @@ class ApplicationController < ActionController::Base
       format.html {
         render :template => 'common/error', :layout => use_layout, :status => @status
       }
-      format.atom { head @status }
-      format.xml { head @status }
-      format.js { head @status }
-      format.json { head @status }
+      format.any { head @status }
     end
   end
-  
+
+  # Handler for ActionView::MissingTemplate exception
+  def missing_template
+    logger.warn "Missing template, responding with 404"
+    @project = nil
+    render_404
+  end
+
   # Filter for actions that provide an API response
   # but have no HTML representation for non admin users
   def require_admin_or_api_request
index 09ffd070c47aca2ee04fba93dbcc1d6dd25929c7..fe4059afb87ef9dd84b97bd2c9e29e2ab3277ab0 100644 (file)
@@ -60,4 +60,9 @@ class ApplicationTest < ActionController::IntegrationTest
     assert_response 200
     assert_nil session[:user_id]
   end
+
+  def test_missing_template_should_respond_with_404
+    get '/login.png'
+    assert_response 404
+  end
 end