From 77b0abb79cb81ae1f4bbbe3c2e5a2f78631b09a8 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 13 Sep 2014 10:35:46 +0000 Subject: [PATCH] Fixed: The error flash message on session expiration is not in the language of the user but of the user of the previous request (#17023). git-svn-id: http://svn.redmine.org/redmine/trunk@13391 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/application_controller.rb | 7 ++++--- test/functional/sessions_test.rb | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 10e0ecbb2..e70f1602c 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -61,6 +61,7 @@ class ApplicationController < ActionController::Base def session_expiration if session[:user_id] if session_expired? && !try_to_autologin + set_localization(User.active.find_by_id(session[:user_id])) reset_session flash[:error] = l(:error_session_expired) redirect_to signin_url @@ -197,10 +198,10 @@ class ApplicationController < ActionController::Base end end - def set_localization + def set_localization(user=User.current) lang = nil - if User.current.logged? - lang = find_language(User.current.language) + if user && user.logged? + lang = find_language(user.language) end if lang.nil? && !Setting.force_default_language_for_anonymous? && request.env['HTTP_ACCEPT_LANGUAGE'] accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first diff --git a/test/functional/sessions_test.rb b/test/functional/sessions_test.rb index a9283e03b..3aa9e70ad 100644 --- a/test/functional/sessions_test.rb +++ b/test/functional/sessions_test.rb @@ -32,6 +32,7 @@ class SessionStartTest < ActionController::TestCase end class SessionsTest < ActionController::TestCase + include Redmine::I18n tests WelcomeController fixtures :users @@ -108,6 +109,20 @@ class SessionsTest < ActionController::TestCase end end + def test_expired_user_session_should_set_locale + set_language_if_valid 'it' + user = User.find(2) + user.language = 'fr' + user.save! + + with_settings :session_timeout => '60' do + get :index, {}, {:user_id => user.id, :atime => 4.hours.ago.utc.to_i} + assert_redirected_to '/login' + assert_include "Veuillez vous reconnecter", flash[:error] + assert_equal :fr, current_language + end + end + def test_anonymous_session_should_not_be_reset with_settings :session_lifetime => '720', :session_timeout => '60' do get :index -- 2.39.5