From 16cc9ec06a5760ab8143ba27bd7324ebf55507a1 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Thu, 1 Oct 2015 17:07:06 +0000 Subject: [PATCH] Activate sudo mode after password based login (#20589). MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Patch by Jens Krämer. git-svn-id: http://svn.redmine.org/redmine/trunk@14635 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/account_controller.rb | 1 + test/integration/sudo_mode_test.rb | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 798ccfb92..d5e0f30e2 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -201,6 +201,7 @@ class AccountController < ApplicationController # Valid user if user.active? successful_authentication(user) + update_sudo_timestamp! # activate Sudo Mode else handle_inactive_user(user) end diff --git a/test/integration/sudo_mode_test.rb b/test/integration/sudo_mode_test.rb index e92126386..1731a61bd 100644 --- a/test/integration/sudo_mode_test.rb +++ b/test/integration/sudo_mode_test.rb @@ -7,8 +7,24 @@ class SudoModeTest < Redmine::IntegrationTest Redmine::SudoMode.stubs(:enabled?).returns(true) end + def test_sudo_mode_should_be_active_after_login + log_user("admin", "admin") + get "/users/new" + assert_response :success + post "/users", + :user => { :login => "psmith", :firstname => "Paul", + :lastname => "Smith", :mail => "psmith@somenet.foo", + :language => "en", :password => "psmith09", + :password_confirmation => "psmith09" } + assert_response 302 + + user = User.find_by_login("psmith") + assert_kind_of User, user + end + def test_add_user log_user("admin", "admin") + expire_sudo_mode! get "/users/new" assert_response :success post "/users", @@ -36,6 +52,7 @@ class SudoModeTest < Redmine::IntegrationTest def test_create_member_xhr log_user 'admin', 'admin' + expire_sudo_mode! get '/projects/ecookbook/settings/members' assert_response :success @@ -59,6 +76,7 @@ class SudoModeTest < Redmine::IntegrationTest def test_create_member log_user 'admin', 'admin' + expire_sudo_mode! get '/projects/ecookbook/settings/members' assert_response :success @@ -84,6 +102,7 @@ class SudoModeTest < Redmine::IntegrationTest def test_create_role log_user 'admin', 'admin' + expire_sudo_mode! get '/roles' assert_response :success @@ -118,6 +137,7 @@ class SudoModeTest < Redmine::IntegrationTest def test_update_email_address log_user 'jsmith', 'jsmith' + expire_sudo_mode! get '/my/account' assert_response :success post '/my/account', user: { mail: 'newmail@test.com' } @@ -161,4 +181,11 @@ class SudoModeTest < Redmine::IntegrationTest end end end + + private + + # sudo mode is active after sign, let it expire by advancing the time + def expire_sudo_mode! + travel_to 20.minutes.from_now + end end -- 2.39.5