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