Change middlwares order and set cookies cookies instead of using deprecated sessions for language switching

This commit is contained in:
Gaëtan L
2023-02-17 11:20:02 +01:00
parent 63af0b6acb
commit 0424a6c88b
5 changed files with 16 additions and 14 deletions
+2 -2
View File
@@ -393,20 +393,20 @@ packages to ``INSTALLED_APPS``:
'django_otp.plugins.otp_static',
)
Add new middlewares to ``MIDDLEWARE``:
Add new middlewares to ``MIDDLEWARE``. It has to be after the SessionMiddleware and before the CommonMiddleware:
.. sourcecode:: python
MIDDLEWARE = (
'x_forwarded_for.middleware.XForwardedForMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django_otp.middleware.OTPMiddleware',
'modoboa.core.middleware.TwoFAMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'modoboa.core.middleware.LocalConfigMiddleware',
'modoboa.lib.middleware.AjaxLoginRedirect',
@@ -97,15 +97,15 @@ INSTALLED_APPS += MODOBOA_APPS
AUTH_USER_MODEL = 'core.User'
MIDDLEWARE = (
'x_forwarded_for.middleware.XForwardedForMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'x_forwarded_for.middleware.XForwardedForMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django_otp.middleware.OTPMiddleware',
'modoboa.core.middleware.TwoFAMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'modoboa.core.middleware.LocalConfigMiddleware',
'modoboa.lib.middleware.AjaxLoginRedirect',
+5 -3
View File
@@ -4,6 +4,7 @@ import logging
import oath
from django.conf import settings
from django.http import (
HttpResponse, HttpResponseRedirect, Http404, JsonResponse)
from django.template.loader import render_to_string
@@ -83,8 +84,6 @@ def dologin(request):
request.session.set_expiry(0)
translation.activate(request.user.language)
request.session[translation.LANGUAGE_SESSION_KEY] = (
request.user.language)
logger.info(
_("User '%s' successfully logged in") % user.username
@@ -93,7 +92,10 @@ def dologin(request):
sender="dologin",
username=form.cleaned_data["username"],
password=form.cleaned_data["password"])
return HttpResponseRedirect(find_nextlocation(request, user))
response = HttpResponseRedirect(find_nextlocation(request, user))
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, request.user.language)
return response
error = _(
"Your username and password didn't match. Please try again.")
logger.warning(
+5 -5
View File
@@ -5,6 +5,7 @@ import io
import qrcode
import qrcode.image.svg
from django.conf import settings
from django.shortcuts import render
from django.template.loader import render_to_string
from django.utils import translation
@@ -55,11 +56,10 @@ def profile(request, tplname="core/user_profile.html"):
form.cleaned_data["confirmation"]
))
translation.activate(request.user.language)
request.session[translation.LANGUAGE_SESSION_KEY] = (
request.user.language)
return render_to_json_response(_("Profile updated"))
return render_to_json_response(
{"form_errors": form.errors}, status=400)
response = render_to_json_response(_("Profile updated"))
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, request.user.language)
return response
render_to_json_response({"form_errors": form.errors}, status=400)
form = ProfileForm(update_password, instance=request.user)
return render_to_json_response({
+2 -2
View File
@@ -104,15 +104,15 @@ INSTALLED_APPS += MODOBOA_APPS
AUTH_USER_MODEL = 'core.User'
MIDDLEWARE = (
'x_forwarded_for.middleware.XForwardedForMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'x_forwarded_for.middleware.XForwardedForMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django_otp.middleware.OTPMiddleware',
'modoboa.core.middleware.TwoFAMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'modoboa.core.middleware.LocalConfigMiddleware',
'modoboa.lib.middleware.AjaxLoginRedirect',