Ver código fonte

Fixes #16758: Create language cookie if required (#16764)

* Fixes #16758: Create language cookie if required

* Align language cookie with session lifetime
Martin 1 ano atrás
pai
commit
6a1245c792
2 arquivos alterados com 7 adições e 2 exclusões
  1. 2 2
      netbox/account/views.py
  2. 5 0
      netbox/netbox/middleware.py

+ 2 - 2
netbox/account/views.py

@@ -111,7 +111,7 @@ class LoginView(View):
 
 
             # Set the user's preferred language (if any)
             # Set the user's preferred language (if any)
             if language := request.user.config.get('locale.language'):
             if language := request.user.config.get('locale.language'):
-                response.set_cookie(settings.LANGUAGE_COOKIE_NAME, language)
+                response.set_cookie(settings.LANGUAGE_COOKIE_NAME, language, max_age=request.session.get_expiry_age())
 
 
             return response
             return response
 
 
@@ -206,7 +206,7 @@ class UserConfigView(LoginRequiredMixin, View):
 
 
             # Set/clear language cookie
             # Set/clear language cookie
             if language := form.cleaned_data['locale.language']:
             if language := form.cleaned_data['locale.language']:
-                response.set_cookie(settings.LANGUAGE_COOKIE_NAME, language)
+                response.set_cookie(settings.LANGUAGE_COOKIE_NAME, language, max_age=request.session.get_expiry_age())
             else:
             else:
                 response.delete_cookie(settings.LANGUAGE_COOKIE_NAME)
                 response.delete_cookie(settings.LANGUAGE_COOKIE_NAME)
 
 

+ 5 - 0
netbox/netbox/middleware.py

@@ -47,6 +47,11 @@ class CoreMiddleware:
         with event_tracking(request):
         with event_tracking(request):
             response = self.get_response(request)
             response = self.get_response(request)
 
 
+        # Check if language cookie should be renewed
+        if request.user.is_authenticated and settings.SESSION_SAVE_EVERY_REQUEST:
+            if language := request.user.config.get('locale.language'):
+                response.set_cookie(settings.LANGUAGE_COOKIE_NAME, language, max_age=request.session.get_expiry_age())
+
         # Attach the unique request ID as an HTTP header.
         # Attach the unique request ID as an HTTP header.
         response['X-Request-ID'] = request.id
         response['X-Request-ID'] = request.id