瀏覽代碼

Fixes #16512: Restore a user's preferred language on login (#16628)

Jeremy Stretch 1 年之前
父節點
當前提交
973bd0ed75
共有 1 個文件被更改,包括 11 次插入4 次删除
  1. 11 4
      netbox/account/views.py

+ 11 - 4
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