diff --git a/theme/templates/register.html b/theme/templates/register.html new file mode 100644 index 0000000..876493d --- /dev/null +++ b/theme/templates/register.html @@ -0,0 +1,36 @@ +{%extends "base.html" %} + +{% block content %} +
+
+
+
+

+ Create your account +

+
+ + {% csrf_token %} +
+ + +
+
+ + +
+
+ + +
+ +
+
+
+
+
+{% endblock content %} \ No newline at end of file diff --git a/zitate/forms.py b/zitate/forms.py index 7313be9..c1776a7 100644 --- a/zitate/forms.py +++ b/zitate/forms.py @@ -4,4 +4,10 @@ from django.contrib.auth.models import User class LoginForm(forms.Form): username = forms.CharField(label="username", max_length=255) password = forms.CharField(label="password", max_length=255, widget=forms.PasswordInput) - auth_type = forms.CharField(label="auth_type", max_length=255) \ No newline at end of file + auth_type = forms.CharField(label="auth_type", max_length=255) + + +class RegisterForm(forms.Form): + username = forms.CharField(label="username", max_length=255) + password = forms.CharField(label="password", max_length=255, widget=forms.PasswordInput) + email = forms.CharField(label="email", max_length=255) \ No newline at end of file diff --git a/zitate/urls.py b/zitate/urls.py index 08ea24f..281f2ef 100644 --- a/zitate/urls.py +++ b/zitate/urls.py @@ -22,6 +22,7 @@ urlpatterns = [ path('admin/', admin.site.urls), path("__reload__/", include("django_browser_reload.urls")), path("login", login, name="login"), + path("register", register, name="register"), path("logout", logout, name="logout"), path("settings/", include('settings.urls')), ] diff --git a/zitate/views.py b/zitate/views.py index 1654740..b4f44b2 100644 --- a/zitate/views.py +++ b/zitate/views.py @@ -1,8 +1,9 @@ from django.shortcuts import render import django.contrib.auth as dauth from django.shortcuts import redirect +from django.contrib.auth.models import User -from zitate.forms import LoginForm +from zitate.forms import LoginForm, RegisterForm def login(request): @@ -24,6 +25,24 @@ def login(request): elif auth_type == "openid": return render(request, "login.html") +def register(request): + if request.method == "GET": + return render(request, "register.html") + elif request.method == "POST": + form = RegisterForm(request.POST) + if form.is_valid(): + username = form.cleaned_data["username"] + password = form.cleaned_data["password"] + email = form.cleaned_data["email"] + User.objects.create_user(username, email, password) + user = dauth.authenticate(request, username=username, password=password) + if user is not None: + dauth.login(request, user) + return redirect("/") + else: + return render(request, "register.html", {"userError": True}) + + def logout(request): dauth.logout(request) return redirect("/") \ No newline at end of file