59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
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")
|