From 4e08d2049faa8fc738b3baef8031c5b4fa7fc950 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Thu, 2 Jul 2020 14:35:02 +0200 Subject: [PATCH] Ensure a valid locale is persisted during login This action has to be performed here and not in I18nHelper, as spree_current_user is not initialized yet during the other checks / setting the selected locale value in the app --- app/controllers/spree/user_sessions_controller.rb | 8 ++++++++ spec/features/consumer/authentication_spec.rb | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/controllers/spree/user_sessions_controller.rb b/app/controllers/spree/user_sessions_controller.rb index 82ca577fc3..44fb56a312 100644 --- a/app/controllers/spree/user_sessions_controller.rb +++ b/app/controllers/spree/user_sessions_controller.rb @@ -6,11 +6,13 @@ module Spree include Spree::Core::ControllerHelpers::Common include Spree::Core::ControllerHelpers::Order include Spree::Core::ControllerHelpers::SSL + include I18nHelper ssl_required :new, :create, :destroy, :update ssl_allowed :login_bar before_action :set_checkout_redirect, only: :create + after_action :ensure_valid_locale, only: :create def create authenticate_spree_user! @@ -48,5 +50,11 @@ module Spree redirect_to(session["spree_user_return_to"] || default) session["spree_user_return_to"] = nil end + + def ensure_valid_locale + return unless spree_current_user && !available_locale?(spree_current_user.locale) + + spree_current_user.update!(locale: I18n.default_locale) + end end end diff --git a/spec/features/consumer/authentication_spec.rb b/spec/features/consumer/authentication_spec.rb index cd4921190a..3e676b4c1e 100644 --- a/spec/features/consumer/authentication_spec.rb +++ b/spec/features/consumer/authentication_spec.rb @@ -161,7 +161,7 @@ feature "Authentication", js: true do user.update!(locale: "xx") end - xit "logs in successfully and resets the user's locale to the default" do + it "logs in successfully and resets the user's locale to the default" do fill_in_and_submit_login_form(user) expect_logged_in