fix: login page i18n same with personal settings

This commit is contained in:
Bai 2025-06-19 16:37:33 +08:00 committed by w940853815
parent fb64af2eb2
commit d32c11bced
4 changed files with 14 additions and 41 deletions

View File

@ -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

View File

@ -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'

View File

@ -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

View File

@ -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',