diff --git a/src/c3nav/site/static/site/css/c3nav.css b/src/c3nav/site/static/site/css/c3nav.css
index 032f7e1c..0606549c 100644
--- a/src/c3nav/site/static/site/css/c3nav.css
+++ b/src/c3nav/site/static/site/css/c3nav.css
@@ -64,6 +64,10 @@ main.map {
main.account form {
max-width: 400px;
}
+#modal-content form button[type=submit] {
+ display: block;
+ width: 100%;
+}
#modal-content :last-child {
margin: 0;
}
diff --git a/src/c3nav/site/templates/site/login.html b/src/c3nav/site/templates/site/login.html
index 20159189..e2fd96d8 100644
--- a/src/c3nav/site/templates/site/login.html
+++ b/src/c3nav/site/templates/site/login.html
@@ -9,6 +9,7 @@
{% csrf_token %}
{{ form }}
+ {% trans 'Create new account' %}
{% endblock %}
diff --git a/src/c3nav/site/templates/site/register.html b/src/c3nav/site/templates/site/register.html
new file mode 100644
index 00000000..21eaba78
--- /dev/null
+++ b/src/c3nav/site/templates/site/register.html
@@ -0,0 +1,14 @@
+{% extends 'site/base.html' %}
+{% load i18n %}
+
+{% block content %}
+
+ {% trans 'Create new account' %}
+
+
+
+{% endblock %}
diff --git a/src/c3nav/site/urls.py b/src/c3nav/site/urls.py
index dd7a92d4..3db585b7 100644
--- a/src/c3nav/site/urls.py
+++ b/src/c3nav/site/urls.py
@@ -1,6 +1,6 @@
from django.conf.urls import url
-from c3nav.site.views import account_view, login_view, logout_view, map_index, qr_code
+from c3nav.site.views import account_view, login_view, logout_view, map_index, qr_code, register_view
slug = r'(?P[a-z0-9-_.:]+)'
slug2 = r'(?P[a-z0-9-_.:]+)'
@@ -17,5 +17,6 @@ urlpatterns = [
url(r'^qr/(?P.*)$', qr_code, name='site.qr'),
url(r'^login$', login_view, name='site.login'),
url(r'^logout$', logout_view, name='site.logout'),
+ url(r'^register$', register_view, name='site.register'),
url(r'^account/$', account_view, name='site.account'),
]
diff --git a/src/c3nav/site/views.py b/src/c3nav/site/views.py
index 1162b954..cce05fcc 100644
--- a/src/c3nav/site/views.py
+++ b/src/c3nav/site/views.py
@@ -5,7 +5,7 @@ import qrcode
from django.conf import settings
from django.contrib.auth import login, logout
from django.contrib.auth.decorators import login_required
-from django.contrib.auth.forms import AuthenticationForm
+from django.contrib.auth.forms import AuthenticationForm, UserCreationForm
from django.core.serializers.json import DjangoJSONEncoder
from django.http import HttpResponse, HttpResponseBadRequest
from django.shortcuts import redirect, render
@@ -148,6 +148,26 @@ def logout_view(request):
return close_response(request)
+@never_cache
+def register_view(request):
+ if request.user.is_authenticated:
+ return close_response(request)
+
+ if request.method == 'POST':
+ form = UserCreationForm(data=request.POST)
+ if form.is_valid():
+ user = form.save()
+ login(request, user)
+ return close_response(request)
+ else:
+ form = UserCreationForm()
+
+ for field in form.fields.values():
+ field.help_text = None
+
+ return render(request, 'site/register.html', {'form': form})
+
+
@never_cache
@login_required(login_url='site.login')
def account_view(request):