First working version

This commit is contained in:
2023-01-15 18:32:05 +01:00
parent 0b7d16d3e0
commit 823470e2f2
37 changed files with 902 additions and 24 deletions
View File
+3
View File
@@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.
+6
View File
@@ -0,0 +1,6 @@
from django.apps import AppConfig
class AuthConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'auth'
+11
View File
@@ -0,0 +1,11 @@
from django import forms
class LoginForm(forms.Form):
username = forms.CharField(label="Username", max_length=100, required=True, strip=True,
widget=forms.TextInput(attrs={"class": "form-control"})
)
password = forms.CharField(label="Password", max_length=100, required=True,
widget=forms.PasswordInput(attrs={"class": "form-control"})
)
View File
+3
View File
@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.
+8
View File
@@ -0,0 +1,8 @@
from django.urls import path
from . import views
app_name = "auth"
urlpatterns = [
path('login', views.LoginView.as_view(), name="login"),
path('logout', views.LogoutView.as_view(), name="logout"),
]
+51
View File
@@ -0,0 +1,51 @@
from django.shortcuts import render
from django.urls import reverse
from django.http import HttpResponseRedirect
from django.contrib.auth import authenticate, login, logout
from django.views import generic
from .forms import LoginForm
class LoginView(generic.TemplateView):
template_name = "auth/login.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["form"] = LoginForm()
if "next" in self.request.GET:
context["next"] = self.request.GET["next"]
return context
def get(self, request, *args, **kwargs):
if request.user.is_authenticated:
return HttpResponseRedirect(request.GET.get("next","/"))
context = self.get_context_data(**kwargs)
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
if request.user.is_authenticated:
return HttpResponseRedirect(request.POST.get("next","/"))
form = LoginForm(request.POST)
if not form.is_valid():
return HttpResponseRedirect(reverse("auth:login"))
user = authenticate(request, username=form.cleaned_data["username"], password=form.cleaned_data["password"])
if user is not None:
login(request, user)
return HttpResponseRedirect(request.GET.get("next", "/"))
else:
return HttpResponseRedirect(reverse("auth:login"))
class LogoutView(generic.RedirectView):
def get_redirect_url(self):
return self.request.GET.get("next", "/")
def get(self, request, *args, **kwargs):
logout(request)
return super().get(request, *args, **kwargs)
def logout_view(request):
logout(request)
redirect_to = request.GET.get("redirect_to", "/")
return HttpResponseRedirect(redirect_to)