From 973bd0ed75426a907467ad0886e7041e441a595c Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 18 Jun 2024 08:17:08 -0400 Subject: [PATCH] Fixes #16512: Restore a user's preferred language on login (#16628) --- netbox/account/views.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/netbox/account/views.py b/netbox/account/views.py index 40ce78039..feb85fdfe 100644 --- a/netbox/account/views.py +++ b/netbox/account/views.py @@ -104,10 +104,16 @@ class LoginView(View): # Ensure the user has a UserConfig defined. (This should normally be handled by # create_userconfig() on user creation.) if not hasattr(request.user, 'config'): - config = get_config() - UserConfig(user=request.user, data=config.DEFAULT_USER_PREFERENCES).save() + request.user.config = get_config() + UserConfig(user=request.user, data=request.user.config.DEFAULT_USER_PREFERENCES).save() - return self.redirect_to_next(request, logger) + response = self.redirect_to_next(request, logger) + + # Set the user's preferred language (if any) + if language := request.user.config.get('locale.language'): + response.set_cookie(settings.LANGUAGE_COOKIE_NAME, language) + + return response else: logger.debug(f"Login form validation failed for username: {form['username'].value()}") @@ -145,9 +151,10 @@ class LogoutView(View): logger.info(f"User {username} has logged out") messages.info(request, "You have logged out.") - # Delete session key cookie (if set) upon logout + # Delete session key & language cookies (if set) upon logout response = HttpResponseRedirect(resolve_url(settings.LOGOUT_REDIRECT_URL)) response.delete_cookie('session_key') + response.delete_cookie(settings.LANGUAGE_COOKIE_NAME) return response