from django.conf import settings from django.contrib.auth import login, logout from django.contrib.auth.decorators import login_required from django.http import HttpRequest, HttpResponse from django.shortcuts import redirect, render, reverse from . import forms def auth_login(req: HttpRequest) -> HttpResponse: if req.method == "POST": form = forms.LoginForm(data=req.POST) if not form.is_valid(): return render(req, "account/login.html", dict(form=form)) user = form.get_user() login(req, user) redirect_url = getattr(req.GET, "next", settings.LOGIN_REDIRECT_URL) return redirect(redirect_url) elif req.method == "GET": form = forms.LoginForm() return render(req, "account/login.html", dict(form=form)) return HttpResponse(status=405) @login_required def auth_logout(req: HttpRequest) -> HttpResponse: logout(req) return redirect(settings.LOGOUT_REDIRECT_URL) def auth_register(req: HttpRequest) -> HttpResponse: if req.user.is_authenticated: return redirect(reverse("me")) if req.method == "POST": form = forms.RegisterForm(data=req.POST) if not form.is_valid(): return render(req, "account/register.html", dict(form=form)) user = form.save() login(req, user) return redirect(settings.LOGIN_BASE_URL) elif req.method == "GET": form = forms.RegisterForm() return render(req, "account/register.html", dict(form=form)) return HttpResponse(status=405) @login_required def me(req: HttpRequest) -> HttpResponse: print(req.user.username) return render(req, "account/me.html")