diff --git a/server/core/settings.py b/server/core/settings.py index 6d20ef89..2763936f 100644 --- a/server/core/settings.py +++ b/server/core/settings.py @@ -355,12 +355,26 @@ WAGTAIL_SITE_NAME = 'skillbox' GRAPHQL_QUERIES_DIR = os.path.join(BASE_DIR, '..', 'client', 'src', 'graphql', 'gql') GRAPHQL_MUTATIONS_DIR = os.path.join(GRAPHQL_QUERIES_DIR, 'mutations') -EMAIL_BACKEND = 'sendgrid_backend.SendgridBackend' +# Sendgrid Config + +# EMAIL_BACKEND = 'sendgrid_backend.SendgridBackend' +# +# SENDGRID_API_KEY = os.environ.get("SENDGRID_API_KEY") +# SENDGRID_SANDBOX_MODE_IN_DEBUG = False -SENDGRID_API_KEY = os.environ.get("SENDGRID_API_KEY") -SENDGRID_SANDBOX_MODE_IN_DEBUG = False DEFAULT_FROM_EMAIL = 'myskillbox ' +# Metanet Config +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' + +EMAIL_HOST = os.environ.get("EMAIL_HOST") +EMAIL_PORT = os.environ.get("EMAIL_PORT") +EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_HOST_PASSWORD") +EMAIL_HOST_USER = os.environ.get("EMAIL_HOST_USER") +EMAIL_USE_TLS = True +EMAIL_USE_SSL = False + + TASKBASE_USER = os.environ.get("TASKBASE_USER") TASKBASE_PASSWORD = os.environ.get("TASKBASE_PASSWORD") TASKBASE_SUPERUSER = os.environ.get("TASKBASE_SUPERUSER") diff --git a/server/core/templates/registration/password_reset_email.html b/server/core/templates/registration/password_reset_email.html index 183a52f1..a8204a5d 100644 --- a/server/core/templates/registration/password_reset_email.html +++ b/server/core/templates/registration/password_reset_email.html @@ -1,12 +1,21 @@ -{% load i18n %}{% autoescape off %} -{% blocktrans %}Du erhältst dieses E-Mail, weil dein Passwort auf {{ site_name }} zurückgesetzt wurde.{% endblocktrans %} +{% load i18n %} +{% load core_tags %} +{% autoescape off %} +

+{% blocktrans %}Sie erhalten diese E-Mail, weil Ihr Passwort auf {{ site_name }} zurückgesetzt wurde.{% endblocktrans %} +

+

{% trans "Bitte öffnen Sie folgende Seite, um Ihr neues Passwort einzugeben:" %} +

{% block reset_link %} -{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %} +

+{% reset_link 'password_reset_confirm' protocol domain token uid %} +

{% endblock %} +

{% trans "Ihr Benutzername lautet:" %} {{ user.get_username }} - +

{% trans "Ihr Skillbox Team" %} {% endautoescape %} diff --git a/server/core/templates/registration/registration_set_password_email.html b/server/core/templates/registration/registration_set_password_email.html index c752eada..c40669be 100644 --- a/server/core/templates/registration/registration_set_password_email.html +++ b/server/core/templates/registration/registration_set_password_email.html @@ -1,12 +1,26 @@ -{% load i18n %}{% autoescape off %} +{% load i18n %} +{% load core_tags %} +{% autoescape off %} +

{% blocktrans %}Sie erhalten diese E-Mail, um Ihr Passwort auf mySkillbox initial zu setzen.{% endblocktrans %} +

+

{% trans "Bitte öffnen Sie folgende Seite, um Ihr neues Passwort einzugeben:" %} -{% block reset_link %} -{{ protocol }}://{{ domain }}{% url 'set_password_confirm' uidb64=uid token=token %} -{% endblock %} -{% trans "Ihr Benutzername lautet:" %} {{ user.get_username }} +

+

+{% block reset_link %} +{% reset_link 'set_password_confirm' protocol domain token uid %} +

+{% endblock %} + +

+{% trans "Ihr Benutzername lautet:" %} {{ user.get_username }} +

+ +

{% trans "Ihr mySkillbox Team" %} +

{% endautoescape %} diff --git a/server/core/templates/registration/set_password_email.html b/server/core/templates/registration/set_password_email.html index c752eada..f848abd9 100644 --- a/server/core/templates/registration/set_password_email.html +++ b/server/core/templates/registration/set_password_email.html @@ -1,9 +1,12 @@ -{% load i18n %}{% autoescape off %} +{% load i18n %} +{% load core_tags %} +{% autoescape off %} + {% blocktrans %}Sie erhalten diese E-Mail, um Ihr Passwort auf mySkillbox initial zu setzen.{% endblocktrans %} {% trans "Bitte öffnen Sie folgende Seite, um Ihr neues Passwort einzugeben:" %} {% block reset_link %} -{{ protocol }}://{{ domain }}{% url 'set_password_confirm' uidb64=uid token=token %} +{% reset_link 'set_password_confirm' protocol domain token uid %} {% endblock %} {% trans "Ihr Benutzername lautet:" %} {{ user.get_username }} diff --git a/server/core/templatetags/core_tags.py b/server/core/templatetags/core_tags.py index e56544e6..83fcb426 100644 --- a/server/core/templatetags/core_tags.py +++ b/server/core/templatetags/core_tags.py @@ -1,6 +1,7 @@ import json from django import template +from django.urls import reverse from rest_framework import serializers register = template.Library() @@ -18,4 +19,9 @@ def json_dumps(obj): @register.filter(name='class_name') def class_name(obj): - return str(obj.__class__.__name__) \ No newline at end of file + return str(obj.__class__.__name__) + + +@register.simple_tag +def reset_link(name, protocol, domain, token, uid): + return '{}://{}{}'.format(protocol, domain, reverse(name, kwargs={'uidb64': uid, 'token': token})) diff --git a/server/core/urls.py b/server/core/urls.py index ef247798..fb93d8d2 100644 --- a/server/core/urls.py +++ b/server/core/urls.py @@ -2,6 +2,7 @@ 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.contrib.auth.views import PasswordResetView from django.urls import re_path, path from django.views.generic import RedirectView from wagtail.admin import urls as wagtailadmin_urls @@ -14,10 +15,14 @@ from core.views import LegacySetPasswordView, LegacySetPasswordDoneView, LegacyS urlpatterns = [ # django admin url(r'^guru/', admin.site.urls), - url(r'^accounts/', include('django.contrib.auth.urls')), url(r'^statistics/', include('statistics.urls', namespace='statistics')), # legacy - will be removed + # forgot password + path('accounts/password_reset/', + PasswordResetView.as_view(html_email_template_name='registration/password_reset_email.html')), + path(r'accounts/', include('django.contrib.auth.urls')), + # set password path('welcome/', LegacySetPasswordView.as_view(), name='set_password'), path('set-password/done/', LegacySetPasswordDoneView.as_view(), name='set_password_done'), diff --git a/server/core/views.py b/server/core/views.py index b495cfc1..7a00faf5 100644 --- a/server/core/views.py +++ b/server/core/views.py @@ -27,7 +27,7 @@ def home(request): class SetPasswordView(PasswordResetView): - email_template_name = 'registration/registration_set_password_email.html' + html_email_template_name = 'registration/registration_set_password_email.html' subject_template_name = 'registration/registration_set_password_subject.txt' success_url = reverse_lazy('registration_set_password_done') template_name = 'registration/registration_set_password_form.html' @@ -52,7 +52,7 @@ class SetPasswordCompleteView(PasswordResetCompleteView): # legacy class LegacySetPasswordView(PasswordResetView): - email_template_name = 'registration/set_password_email.html' + html_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'