67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
from django.conf import settings
|
|
from django.contrib.auth import login
|
|
from django.contrib.auth import logout
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.http import HttpRequest
|
|
from django.http import HttpResponse
|
|
from django.shortcuts import redirect
|
|
from django.shortcuts import render
|
|
from django.shortcuts import 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)
|
|
|
|
user.email_user(
|
|
subject='You have just logged in!',
|
|
message='You have just logged in',
|
|
)
|
|
|
|
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:
|
|
return render(req, 'account/me.html')
|