]> source.dussan.org Git - redmine.git/commitdiff
Code cleanup: unverified request no longer raises a InvalidAuthenticityToken exception.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 11 Nov 2013 20:59:17 +0000 (20:59 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 11 Nov 2013 20:59:17 +0000 (20:59 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@12267 e93f8b46-1217-0410-a6f0-8f06a7374b81

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

index 6e53ffe01ee955fcf738ecb6924a84f269fa62b5..fa97b179c93d4078b3bc3b62dad21d436f92e478 100644 (file)
@@ -36,11 +36,14 @@ class ApplicationController < ActionController::Base
   def handle_unverified_request
     super
     cookies.delete(autologin_cookie_name)
+    if api_request?
+      logger.error "API calls must include a proper Content-type header (application/xml or application/json)."
+    end
+    render_error :status => 422, :message => "Invalid form authenticity token."
   end
 
   before_filter :session_expiration, :user_setup, :check_if_login_required, :check_password_change, :set_localization
 
-  rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token
   rescue_from ::Unauthorized, :with => :deny_access
   rescue_from ::ActionView::MissingTemplate, :with => :missing_template
 
@@ -450,13 +453,6 @@ class ApplicationController < ActionController::Base
     request.xhr? ? false : 'base'
   end
 
-  def invalid_authenticity_token
-    if api_request?
-      logger.error "Form authenticity token is missing or is invalid. API calls must include a proper Content-type header (text/xml or text/json)."
-    end
-    render_error "Invalid form authenticity token."
-  end
-
   def render_feed(items, options={})
     @items = items || []
     @items.sort! {|x,y| y.event_datetime <=> x.event_datetime }
index 7f4e3b5950b0f2f21ad0a2da8e241577cc4dedec..3ad12a3d12c93549ddd969016633d496d7bc71eb 100644 (file)
@@ -67,4 +67,13 @@ class ApplicationTest < ActionController::IntegrationTest
     get '/login.png'
     assert_response 404
   end
+
+  def test_invalid_token_should_call_custom_handler
+    ActionController::Base.allow_forgery_protection = true
+    post '/issues'
+    assert_response 422
+    assert_include "Invalid form authenticity token.", response.body
+  ensure
+    ActionController::Base.allow_forgery_protection = false
+  end
 end