24 lines
700 B
Python
24 lines
700 B
Python
|
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
|