From d32c11bcedfae9b60c01cf229740a52bb8b2d93a Mon Sep 17 00:00:00 2001 From: Bai Date: Thu, 19 Jun 2025 16:37:33 +0800 Subject: [PATCH] fix: login page i18n same with personal settings --- apps/authentication/signal_handlers.py | 2 +- apps/authentication/views/login.py | 13 +++++++++ apps/jumpserver/middleware.py | 39 -------------------------- apps/jumpserver/settings/base.py | 1 - 4 files changed, 14 insertions(+), 41 deletions(-) diff --git a/apps/authentication/signal_handlers.py b/apps/authentication/signal_handlers.py index 4dd2caa2f..9ba927075 100644 --- a/apps/authentication/signal_handlers.py +++ b/apps/authentication/signal_handlers.py @@ -37,7 +37,7 @@ def on_user_auth_login_success(sender, user, request, **kwargs): cache.set(lock_key, request.session.session_key, None) lang = request.COOKIES.get('django_language') - if not user.lang and lang: + if lang: user.lang = lang diff --git a/apps/authentication/views/login.py b/apps/authentication/views/login.py index f31705937..6edb01acd 100644 --- a/apps/authentication/views/login.py +++ b/apps/authentication/views/login.py @@ -294,6 +294,19 @@ class UserLoginGuardView(mixins.AuthMixin, RedirectView): ) return url + def get(self, request, *args, **kwargs): + from django.utils import timezone + response = super().get(request, *args, **kwargs) + try: + response.set_cookie( + settings.LANGUAGE_COOKIE_NAME, + request.user.lang, + expires=timezone.now() + timezone.timedelta(days=365) + ) + except Exception: + pass + return response + class UserLoginWaitConfirmView(TemplateView): template_name = 'authentication/login_wait_confirm.html' diff --git a/apps/jumpserver/middleware.py b/apps/jumpserver/middleware.py index 19fa827cc..250d4d34e 100644 --- a/apps/jumpserver/middleware.py +++ b/apps/jumpserver/middleware.py @@ -137,42 +137,3 @@ class EndMiddleware: response = self.get_response(request) request._e_time_end = time.time() return response - - -class LocaleMiddleware: - @staticmethod - def check_white_urls(request): - white_urls = [ - 'core/auth/login', 'jsi18n/', '/static/', '/core/i18n/', '/authentication/user-session/' - ] - for url in white_urls: - if request.path.find(url) > -1: - return True - return False - - def __init__(self, get_response): - self.get_response = get_response - - def __call__(self, request): - response = self.get_response(request) - if self.check_white_urls(request): - return response - lang = None - if request.user.is_authenticated: - lang = getattr(request.user, 'lang', None) - - if not lang: - lang = translation.get_language_from_request(request, check_path=False) - - lang = lang or settings.LANGUAGE_CODE - try: - translation.activate(lang) - request.LANGUAGE_CODE = lang - response.set_cookie( - settings.LANGUAGE_COOKIE_NAME, - lang, - expires=timezone.now() + timezone.timedelta(days=365) - ) - except Exception: - pass - return response diff --git a/apps/jumpserver/settings/base.py b/apps/jumpserver/settings/base.py index 11169db06..00bb729c4 100644 --- a/apps/jumpserver/settings/base.py +++ b/apps/jumpserver/settings/base.py @@ -165,7 +165,6 @@ MIDDLEWARE = [ 'jumpserver.middleware.RequestMiddleware', 'jumpserver.middleware.RefererCheckMiddleware', 'jumpserver.middleware.SQLCountMiddleware', - 'jumpserver.middleware.LocaleMiddleware', 'orgs.middleware.OrgMiddleware', 'authentication.backends.oidc.middleware.OIDCRefreshIDTokenMiddleware', 'authentication.backends.cas.middleware.CASMiddleware',