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

63 lines
1.7 KiB
Python
Raw Normal View History

2023-12-18 21:00:37 +01:00
from django.conf import settings
2024-02-03 22:07:20 +01:00
from django.contrib.auth import login
from django.contrib.auth import logout
2023-12-18 21:00:37 +01:00
from django.contrib.auth.decorators import login_required
2024-02-03 22:07:20 +01:00
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
2023-12-18 21:00:37 +01:00
2023-12-18 23:05:49 +01:00
from . import forms
2023-12-18 21:00:37 +01:00
def auth_login(req: HttpRequest) -> HttpResponse:
2024-02-03 22:07:20 +01:00
if req.method == 'POST':
2023-12-19 13:49:34 +01:00
form = forms.LoginForm(data=req.POST)
2023-12-18 23:05:49 +01:00
if not form.is_valid():
2024-02-03 22:07:20 +01:00
return render(req, 'account/login.html', dict(form=form))
2023-12-18 23:05:49 +01:00
user = form.get_user()
login(req, user)
2024-02-03 22:07:20 +01:00
redirect_url = getattr(req.GET, 'next', settings.LOGIN_REDIRECT_URL)
2023-12-18 23:05:49 +01:00
return redirect(redirect_url)
2024-02-03 22:07:20 +01:00
elif req.method == 'GET':
2023-12-19 13:49:34 +01:00
form = forms.LoginForm()
2024-02-03 22:07:20 +01:00
return render(req, 'account/login.html', dict(form=form))
2023-12-18 23:05:49 +01:00
2023-12-18 21:00:37 +01:00
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:
2023-12-19 13:49:34 +01:00
if req.user.is_authenticated:
2024-02-03 22:07:20 +01:00
return redirect(reverse('me'))
if req.method == 'POST':
2023-12-19 13:49:34 +01:00
form = forms.RegisterForm(data=req.POST)
if not form.is_valid():
2024-02-03 22:07:20 +01:00
return render(req, 'account/register.html', dict(form=form))
2023-12-19 13:49:34 +01:00
user = form.save()
login(req, user)
return redirect(settings.LOGIN_BASE_URL)
2024-02-03 22:07:20 +01:00
elif req.method == 'GET':
2023-12-19 13:49:34 +01:00
form = forms.RegisterForm()
2024-02-03 22:07:20 +01:00
return render(req, 'account/register.html', dict(form=form))
2023-12-19 13:49:34 +01:00
return HttpResponse(status=405)
2023-12-18 21:00:37 +01:00
2023-12-18 23:05:49 +01:00
2023-12-18 21:00:37 +01:00
@login_required
def me(req: HttpRequest) -> HttpResponse:
2024-02-03 22:07:20 +01:00
return render(req, 'account/me.html')