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