Commit dfae0334 authored by Agate's avatar Agate 💬

Merge branch '806-reset-email' into 'develop'

Fix #806: Use proper site name/domain in emails

Closes #806

See merge request !732
parents 71b7f416 39485c8e
Pipeline #4009 passed with stages
in 9 minutes and 31 seconds
{% load account %}{% user_display user as user_display %}{% load i18n %}{% autoescape off %}{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Hello from {{ site_name }}!
{% load account %}{% user_display user as user_display %}{% load i18n %}{% autoescape off %}{% blocktrans with site_name=funkwhale_site_name site_domain=funkwhale_site_domain %}Hello from {{ site_name }}!
You're receiving this e-mail because user {{ user_display }} at {{ site_domain }} has given yours as an e-mail address to connect their account.
To confirm this is correct, go to {{ funkwhale_url }}/auth/email/confirm?key={{ key }}
{% endblocktrans %}{% endautoescape %}
{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Thank you from {{ site_name }}!
{% blocktrans with site_name=funkwhale_site_name site_domain=funkwhale_site_domain %}Thank you from {{ site_name }}!
{{ site_domain }}{% endblocktrans %}
{% load i18n %}{% autoescape off %}
{% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %}
{% blocktrans with site_name=funkwhale_site_name %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %}
{% trans "Please go to the following page and choose a new password:" %}
{{ funkwhale_url }}/auth/password/reset/confirm?uid={{ uid }}&token={{ token }}
......@@ -7,6 +7,6 @@
{% trans "Thanks for using our site!" %}
{% blocktrans %}The {{ site_name }} team{% endblocktrans %}
{% blocktrans with site_name=funkwhale_site_name %}The {{ site_name }} team{% endblocktrans %}
{% endautoescape %}
......@@ -3,11 +3,22 @@ from django.conf import settings
from dynamic_preferences.registries import global_preferences_registry
def get_email_context():
context = {}
context["funkwhale_url"] = settings.FUNKWHALE_URL
manager = global_preferences_registry.manager()
context["funkwhale_site_name"] = (
manager["instance__name"] or settings.FUNKWHALE_HOSTNAME
)
context["funkwhale_site_domain"] = settings.FUNKWHALE_HOSTNAME
return context
class FunkwhaleAccountAdapter(DefaultAccountAdapter):
def is_open_for_signup(self, request):
manager = global_preferences_registry.manager()
return manager["users__registration_enabled"]
def send_mail(self, template_prefix, email, context):
context["funkwhale_url"] = settings.FUNKWHALE_URL
context.update(get_email_context())
return super().send_mail(template_prefix, email, context)
import re
from django.conf import settings
from django.core import validators
from django.utils.deconstruct import deconstructible
from django.utils.translation import gettext_lazy as _
......@@ -12,6 +11,7 @@ from versatileimagefield.serializers import VersatileImageFieldSerializer
from funkwhale_api.activity import serializers as activity_serializers
from funkwhale_api.common import serializers as common_serializers
from . import adapters
from . import models
......@@ -133,4 +133,4 @@ class MeSerializer(UserReadSerializer):
class PasswordResetSerializer(PRS):
def get_email_options(self):
return {"extra_email_context": {"funkwhale_url": settings.FUNKWHALE_URL}}
return {"extra_email_context": adapters.get_email_context()}
......@@ -168,15 +168,20 @@ def test_changing_password_updates_secret_key(logged_in_api_client):
assert user.password != password
def test_can_request_password_reset(factories, api_client, mailoutbox):
def test_can_request_password_reset(
factories, preferences, settings, api_client, mailoutbox
):
user = factories["users.User"]()
payload = {"email": user.email}
emails = len(mailoutbox)
url = reverse("rest_password_reset")
preferences["instance__name"] = "Hello world"
response = api_client.post(url, payload)
assert response.status_code == 200
assert len(mailoutbox) > emails
confirmation_message = mailoutbox[-1]
assert "Hello world" in confirmation_message.body
assert settings.FUNKWHALE_HOSTNAME in confirmation_message.body
def test_user_can_patch_his_own_settings(logged_in_api_client):
......@@ -287,3 +292,24 @@ def test_creating_user_creates_actor_as_well(
user = User.objects.get(username="test1")
assert user.actor == actor
def test_creating_user_sends_confirmation_email(
api_client, db, settings, preferences, mailoutbox
):
url = reverse("rest_register")
data = {
"username": "test1",
"email": "test1@test.com",
"password1": "testtest",
"password2": "testtest",
}
preferences["users__registration_enabled"] = True
preferences["instance__name"] = "Hello world"
response = api_client.post(url, data)
assert response.status_code == 201
confirmation_message = mailoutbox[-1]
assert "Hello world" in confirmation_message.body
assert settings.FUNKWHALE_HOSTNAME in confirmation_message.body
Use proper site name/domain in emails (#806)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment