summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2013-12-21 12:04:38 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2013-12-21 12:04:38 +0000
commit5ee277fa22e98543ccb76f90efda0ac7076f7e40 (patch)
treec2a46116688a3ac887dccd44acd80d63bac164cd
parent2db5fc1a66a15f54218fd0b477447d34f4d11e4b (diff)
downloadredmine-5ee277fa22e98543ccb76f90efda0ac7076f7e40.tar.gz
redmine-5ee277fa22e98543ccb76f90efda0ac7076f7e40.zip
Fixed that OpenID authentication fails with 422 error due to token verification (#15735).
git-svn-id: http://svn.redmine.org/redmine/trunk@12438 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/account_controller.rb8
-rw-r--r--test/functional/account_controller_openid_test.rb10
2 files changed, 18 insertions, 0 deletions
diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb
index d39fc2ace..a3768d403 100644
--- a/app/controllers/account_controller.rb
+++ b/app/controllers/account_controller.rb
@@ -22,6 +22,14 @@ class AccountController < ApplicationController
# prevents login action to be filtered by check_if_login_required application scope filter
skip_before_filter :check_if_login_required, :check_password_change
+ # Overrides ApplicationController#verify_authenticity_token to disable
+ # token verification on openid callbacks
+ def verify_authenticity_token
+ unless using_open_id?
+ super
+ end
+ end
+
# Login request and validation
def login
if request.get?
diff --git a/test/functional/account_controller_openid_test.rb b/test/functional/account_controller_openid_test.rb
index d99becc8e..e6c72c145 100644
--- a/test/functional/account_controller_openid_test.rb
+++ b/test/functional/account_controller_openid_test.rb
@@ -131,6 +131,16 @@ class AccountControllerOpenidTest < ActionController::TestCase
assert_select 'input[name=?][value=?]', 'user[identity_url]', 'http://openid.example.com/good_blank_user'
end
+ def test_post_login_should_not_verify_token_when_using_open_id
+ ActionController::Base.allow_forgery_protection = true
+ AccountController.any_instance.stubs(:using_open_id?).returns(true)
+ AccountController.any_instance.stubs(:authenticate_with_open_id).returns(true)
+ post :login
+ assert_response 200
+ ensure
+ ActionController::Base.allow_forgery_protection = false
+ end
+
def test_register_after_login_failure_should_not_require_user_to_enter_a_password
Setting.self_registration = '3'