compat: add a set_cookie function (#52929)
This commit is contained in:
parent
c514c67927
commit
316248cf96
|
@ -21,3 +21,16 @@ if django.VERSION < (2, 1):
|
|||
from http import cookies
|
||||
|
||||
cookies.Morsel._reserved.setdefault('samesite', 'SameSite')
|
||||
|
||||
def set_cookie(response, cookie_name, *args, **kwargs):
|
||||
samesite = kwargs.pop('samesite', None)
|
||||
|
||||
response.set_cookie(cookie_name, *args, **kwargs)
|
||||
if samesite is not None:
|
||||
response.cookies[cookie_name]['samesite'] = samesite
|
||||
|
||||
|
||||
else:
|
||||
|
||||
def set_cookie(response, cookie_name, *args, **kwargs):
|
||||
response.set_cookie(cookie_name, *args, **kwargs)
|
||||
|
|
|
@ -19,7 +19,6 @@ import json
|
|||
import logging
|
||||
import uuid
|
||||
|
||||
import django
|
||||
import requests
|
||||
from django.conf import settings
|
||||
from django.contrib import messages
|
||||
|
@ -31,7 +30,7 @@ from django.utils.translation import get_language
|
|||
from django.utils.translation import ugettext as _
|
||||
from django.views.generic.base import View
|
||||
|
||||
import authentic2.compat.cookies # F401
|
||||
from authentic2.compat.cookies import set_cookie
|
||||
from authentic2.decorators import setting_enabled
|
||||
from authentic2.utils import authenticate, good_next_url, login, redirect
|
||||
|
||||
|
@ -97,26 +96,15 @@ def oidc_login(request, pk, next_url=None, *args, **kwargs):
|
|||
# it to user SameSite=Lax. See
|
||||
# https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Set-Cookie/SameSite
|
||||
# for more explanations.
|
||||
if django.VERSION < (2, 1):
|
||||
response.set_cookie(
|
||||
'oidc-state',
|
||||
value=state_id,
|
||||
path=reverse('oidc-login-callback'),
|
||||
httponly=True,
|
||||
secure=request.is_secure(),
|
||||
)
|
||||
# work around lack of samesite parameter to set_cookie() in Django 1.11
|
||||
# it also needs monkeypatch from authentic2.compat.cookies.
|
||||
response.cookies['oidc-state']['samesite'] = 'Lax'
|
||||
else:
|
||||
response.set_cookie(
|
||||
'oidc-state',
|
||||
value=state_id,
|
||||
path=reverse('oidc-login-callback'),
|
||||
httponly=True,
|
||||
secure=request.is_secure(),
|
||||
samesite='Lax',
|
||||
)
|
||||
set_cookie(
|
||||
response,
|
||||
'oidc-state',
|
||||
value=state_id,
|
||||
path=reverse('oidc-login-callback'),
|
||||
httponly=True,
|
||||
secure=request.is_secure(),
|
||||
samesite='Lax',
|
||||
)
|
||||
return response
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue