This repository has been archived on 2025-03-03. You can view files and clone it, but cannot push or open issues or pull requests.
facturio/accounts/views.py

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')