Add password auth decorator

This commit is contained in:
Ludovic Stephan 2019-11-21 01:17:52 +01:00
parent be5218f7e1
commit c1a99453d5

23
kfet/auth/decorators.py Normal file
View file

@ -0,0 +1,23 @@
from functools import wraps
from kfet.auth.backends import AccountBackend
def kfet_password_auth(view_func):
def get_kfet_password(request):
return request.META.get("HTTP_KFETPASSWORD") or request.POST.get("KFETPASSWORD")
@wraps(view_func)
def _wrapped_view(request, *args, **kwargs):
if request.method == "POST":
temp_request_user = AccountBackend().authenticate(
request, kfet_password=get_kfet_password(request)
)
if temp_request_user:
request.real_user = request.user
request.user = temp_request_user
return view_func(request, *args, **kwargs)
return _wrapped_view