diff --git a/various/autentizace/forms.py b/various/autentizace/forms.py new file mode 100644 index 00000000..f3138d74 --- /dev/null +++ b/various/autentizace/forms.py @@ -0,0 +1,16 @@ +""" +Formuláře (:class:`django.forms.Form`) umožňují jednoduchou tvorbu formulářů, +které lze pak jednoduše dát do frontendu i zpracovat na backendu. + +Pro přidání políčka do formuláře je potřeba + - mít v modelu tu položku, kterou chci upravovat + - přidat do views (prihlaskaView, resitelEditView) + - přidat do forms + - includovat do html +""" + +from django.contrib.auth.forms import AuthenticationForm +from django.forms import BooleanField + +class LoginForm(AuthenticationForm): + disable_logout = BooleanField(label="Neodhlašovat", required=False) diff --git a/various/autentizace/views.py b/various/autentizace/views.py index 85ed3528..7bedb755 100644 --- a/various/autentizace/views.py +++ b/various/autentizace/views.py @@ -1,10 +1,23 @@ +from django.http import HttpResponseRedirect from django.urls import reverse_lazy from django.contrib.auth import views as auth_views +from django.contrib.auth import login as auth_login + +from various.autentizace.forms import LoginForm + class LoginView(auth_views.LoginView): # Jen vezmeme vestavěný a dáme mu vhodný template a přesměrovací URL template_name = 'autentizace/login.html' + authentication_form = LoginForm + + def form_valid(self, form): + """ Okopírováno z django/contrib/auth/views.py s přidáním nekonečného přihlášení """ + auth_login(self.request, form.get_user()) + if form.cleaned_data["disable_logout"]: + form.request.session.set_expiry(2**32) # infinity (asi 100 let)... + return HttpResponseRedirect(self.get_success_url()) class LogoutView(auth_views.LogoutView):