diff --git a/server/core/templates/registration/password_reset_confirm.html b/server/core/templates/registration/password_reset_confirm.html index 04619a5a..bdc3fbd6 100644 --- a/server/core/templates/registration/password_reset_confirm.html +++ b/server/core/templates/registration/password_reset_confirm.html @@ -2,7 +2,7 @@ {% extends 'base.html' %} {% load i18n %} -{% block title %}{% trans 'Setze dein Passwort?' %}{% endblock %} +{% block title %}{% trans 'Setze dein Passwort' %}{% endblock %} {% block body %}

skillbox

diff --git a/server/core/templates/registration/set_password_complete.html b/server/core/templates/registration/set_password_complete.html new file mode 100644 index 00000000..dbe05a3d --- /dev/null +++ b/server/core/templates/registration/set_password_complete.html @@ -0,0 +1,13 @@ +{% extends 'base.html' %} +{% load i18n %} + +{% block title %}{% trans 'Passwort setzen abgeschlossen' %}{% endblock %} + +{% block body %} +

skillbox

+

{% trans 'Passwort setzen abgeschlossen' %}

+

{% trans 'Dein Passwort wurde erfolgreich gesetzt. Du kannst dich nun auf der Loginseite anmelden.' %}

+

{% trans 'Einloggen' %}

+ + +{% endblock %} diff --git a/server/core/templates/registration/set_password_confirm.html b/server/core/templates/registration/set_password_confirm.html new file mode 100644 index 00000000..db2bf7f8 --- /dev/null +++ b/server/core/templates/registration/set_password_confirm.html @@ -0,0 +1,23 @@ + +{% extends 'base.html' %} +{% load i18n %} + +{% block title %}{% trans 'Setze dein Passwort' %}{% endblock %} + +{% block body %} +

skillbox

+

{% trans 'Setze dein Passwort' %}

+ +
+ {% csrf_token %} +
+ {{ form.new_password1.label_tag }} + {{ form.new_password1 }} +
+
+ {{ form.new_password2.label_tag }} + {{ form.new_password2 }} +
+ +
+{% endblock %} diff --git a/server/core/templates/registration/set_password_done.html b/server/core/templates/registration/set_password_done.html new file mode 100644 index 00000000..f79996de --- /dev/null +++ b/server/core/templates/registration/set_password_done.html @@ -0,0 +1,12 @@ + +{% extends 'base.html' %} +{% load i18n %} + +{% block title %}{% trans 'Anweisungen versandt' %}{% endblock %} + +{% block body %} +

skillbox

+

{% trans 'Schau in dein Postfach' %}

+

{% trans 'Wir haben die Anweisungen um dein Passwort zu setzen, an dich verschickt. Das E-Mail sollte in Kürze bei dir ankommen.' %}

+ +{% endblock %} diff --git a/server/core/templates/registration/set_password_email.html b/server/core/templates/registration/set_password_email.html new file mode 100644 index 00000000..e248cd40 --- /dev/null +++ b/server/core/templates/registration/set_password_email.html @@ -0,0 +1,12 @@ +{% load i18n %}{% autoescape off %} +{% blocktrans %}Du erhältst dieses E-Mail, um dein Passwort auf {{ site_name }} initial zu setzen.{% endblocktrans %} + +{% trans "Bitte öffne folgende Seite, um dein neues Passwort einzugeben:" %} +{% block reset_link %} +{{ protocol }}://{{ domain }}{% url 'set_password_confirm' uidb64=uid token=token %} +{% endblock %} +{% trans "Dein Benutzername lautet:" %} {{ user.get_username }} + +{% trans "Dein Skillbox Team" %} + +{% endautoescape %} diff --git a/server/core/templates/registration/set_password_form.html b/server/core/templates/registration/set_password_form.html new file mode 100644 index 00000000..844feb6b --- /dev/null +++ b/server/core/templates/registration/set_password_form.html @@ -0,0 +1,24 @@ + +{% extends 'base.html' %} +{% load i18n %} + +{% block title %}{% trans 'Setze ein Passort' %}{% endblock %} + +{% block body %} +

skillbox

+

{% trans 'Setze ein Passort' %}

+

{% trans 'Gib deine E-Mail ein und erhalte weitere Anweisungen um dein Passwort initial zu setzen.' %}

+ +
+ {% csrf_token %} + +
+ {{ form.email.label_tag }} + {{ form.email }} +
+ + +
+ + +{% endblock %} diff --git a/server/core/templates/registration/set_password_subject.txt b/server/core/templates/registration/set_password_subject.txt new file mode 100644 index 00000000..148cd553 --- /dev/null +++ b/server/core/templates/registration/set_password_subject.txt @@ -0,0 +1 @@ +myskillbox Passwort setzen diff --git a/server/core/urls.py b/server/core/urls.py index 35daa49a..92717cbf 100644 --- a/server/core/urls.py +++ b/server/core/urls.py @@ -2,12 +2,13 @@ from django.conf import settings from django.conf.urls import url, include from django.conf.urls.static import static from django.contrib import admin -from django.urls import re_path +from django.urls import re_path, path from django.views.generic import RedirectView from wagtail.admin import urls as wagtailadmin_urls from wagtail.core import urls as wagtail_urls from core import views +from core.views import SetPasswordView, SetPasswordDoneView, SetPasswordConfirmView, SetPasswordCompleteView urlpatterns = [ # django admin @@ -15,6 +16,12 @@ urlpatterns = [ url(r'^accounts/', include('django.contrib.auth.urls')), url(r'^statistics/', include('statistics.urls', namespace='statistics')), + # set password + path('set-password/', SetPasswordView.as_view(), name='set_password'), + path('set-password/done/', SetPasswordDoneView.as_view(), name='set_password_done'), + path('set-password///', SetPasswordConfirmView.as_view(), name='set_password_confirm'), + path('set-password/done/', SetPasswordCompleteView.as_view(), name='set_password_complete'), + # wagtail url(r'^cms/', include(wagtailadmin_urls)), diff --git a/server/core/views.py b/server/core/views.py index ae038c15..3a103a86 100644 --- a/server/core/views.py +++ b/server/core/views.py @@ -2,10 +2,14 @@ import requests from django.conf import settings from django.contrib.auth.decorators import login_required from django.contrib.auth.mixins import LoginRequiredMixin +from django.contrib.auth.views import PasswordResetView, PasswordResetDoneView, PasswordResetConfirmView, \ + PasswordResetCompleteView from django.http.response import HttpResponse from django.shortcuts import render +from django.urls import reverse_lazy from django.views.decorators.csrf import ensure_csrf_cookie from graphene_django.views import GraphQLView +from django.utils.translation import gettext_lazy as _ class PrivateGraphQLView(LoginRequiredMixin, GraphQLView): @@ -22,3 +26,27 @@ def home(request): print('Can not connect to dev server at http://localhost:8080:', e) return render(request, 'index.html', {}) + + +class SetPasswordView(PasswordResetView): + email_template_name = 'registration/set_password_email.html' + subject_template_name = 'registration/set_password_subject.txt' + success_url = reverse_lazy('set_password_done') + template_name = 'registration/set_password_form.html' + title = _('Password setzen') + + +class SetPasswordDoneView(PasswordResetDoneView): + template_name = 'registration/set_password_done.html' + title = _('Password setzen versandt') + + +class SetPasswordConfirmView(PasswordResetConfirmView): + success_url = reverse_lazy('set_password_complete') + template_name = 'registration/set_password_confirm.html' + title = _('Gib ein Passwort ein') + + +class SetPasswordCompleteView(PasswordResetCompleteView): + template_name = 'registration/set_password_complete.html' + title = _('Passwort setzen erfolgreich')