]> source.dussan.org Git - redmine.git/commitdiff
Activate sudo mode after password based login (#20589).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 1 Oct 2015 17:07:06 +0000 (17:07 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 1 Oct 2015 17:07:06 +0000 (17:07 +0000)
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
test/integration/sudo_mode_test.rb

index 798ccfb92581084118e491f87118778d7897e28d..d5e0f30e2e25a6ac6945701087d35c976aa46517 100644 (file)
@@ -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
index e921263860072ed2c03952e8b3d2c47ab9f760c2..1731a61bd56598855db707f196585690a8cc1aeb 100644 (file)
@@ -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