from urllib.parse import quote as urlquote from django.contrib.auth import logout as auth_logout from django.contrib.auth.decorators import login_required from django.shortcuts import redirect, render from django.urls import reverse def login(req): if req.user.is_authenticated: return redirect("homepage") if req.method == "GET": reqDict = req.GET elif req.method == "POST": reqDict = req.POST if "next" in reqDict: nextUrl = reqDict["next"] context = { "pass_url": "{}?next={}".format( reverse("password_login"), urlquote(nextUrl, safe="") ), "cas_url": "{}?next={}".format( reverse("cas_ng_login"), urlquote(nextUrl, safe="") ), } else: context = { "pass_url": reverse("password_login"), "cas_url": reverse("cas_ng_login"), } return render(req, "mainsite/login.html", context=context) @login_required def logout(req): CAS_BACKEND_NAME = "django_cas_ng.backends.CASBackend" if req.session["_auth_user_backend"] != CAS_BACKEND_NAME: auth_logout(req) return redirect("homepage") return redirect("cas_ng_logout")