From ce3dae2a07921f19270f307c2978f2e8e96f1139 Mon Sep 17 00:00:00 2001
From: Son NK <>
Date: Mon, 7 Dec 2020 10:55:13 +0100
Subject: [PATCH] inform user when an alias can't be created when a directory
is disabled
---
app/alias_utils.py | 7 ++++++
app/config.py | 3 +++
app/email_utils.py | 23 +++++++++++++++++++
...annot-create-alias-directory-disabled.html | 20 ++++++++++++++++
...cannot-create-alias-directory-disabled.txt | 10 ++++++++
5 files changed, 63 insertions(+)
create mode 100644 templates/emails/transactional/cannot-create-alias-directory-disabled.html
create mode 100644 templates/emails/transactional/cannot-create-alias-directory-disabled.txt
diff --git a/app/alias_utils.py b/app/alias_utils.py
index 0b24eafd..a36f93a0 100644
--- a/app/alias_utils.py
+++ b/app/alias_utils.py
@@ -8,6 +8,7 @@ from app.email_utils import (
send_cannot_create_directory_alias,
send_cannot_create_domain_alias,
can_create_directory_for_address,
+ send_cannot_create_directory_alias_disabled,
)
from app.errors import AliasInTrashError
from app.extensions import db
@@ -66,6 +67,12 @@ def try_auto_create_directory(address: str) -> Optional[Alias]:
send_cannot_create_directory_alias(dir_user, address, directory_name)
return None
+ if directory.disabled:
+ send_cannot_create_directory_alias_disabled(
+ dir_user, address, directory_name
+ )
+ return None
+
try:
LOG.d("create alias %s for directory %s", address, directory)
diff --git a/app/config.py b/app/config.py
index 3350920a..2ee05ebc 100644
--- a/app/config.py
+++ b/app/config.py
@@ -324,6 +324,9 @@ ALERT_MAILBOX_IS_ALIAS = "mailbox_is_alias"
AlERT_WRONG_MX_RECORD_CUSTOM_DOMAIN = "custom_domain_mx_record_issue"
+# alert when a new alias is about to be created on a disabled directory
+ALERT_DIRECTORY_DISABLED_ALIAS_CREATION = "alert_directory_disabled_alias_creation"
+
# <<<<< END ALERT EMAIL >>>>
# Disable onboarding emails
diff --git a/app/email_utils.py b/app/email_utils.py
index 4ca2d42c..b8f9359c 100644
--- a/app/email_utils.py
+++ b/app/email_utils.py
@@ -37,6 +37,7 @@ from app.config import (
URL,
LANDING_PAGE_URL,
EMAIL_DOMAIN,
+ ALERT_DIRECTORY_DISABLED_ALIAS_CREATION,
)
from app.dns_utils import get_mx_domains
from app.extensions import db
@@ -172,6 +173,28 @@ def send_cannot_create_directory_alias(user, alias_address, directory_name):
directory=directory_name,
),
)
+
+
+def send_cannot_create_directory_alias_disabled(user, alias_address, directory_name):
+ """when the directory is disabled, new alias can't be created on-the-fly.
+ Send user an email to notify of an attempt
+ """
+ send_email_with_rate_control(
+ user,
+ ALERT_DIRECTORY_DISABLED_ALIAS_CREATION,
+ user.email,
+ f"Alias {alias_address} cannot be created",
+ render(
+ "transactional/cannot-create-alias-directory-disabled.txt",
+ name=user.name,
+ alias=alias_address,
+ directory=directory_name,
+ ),
+ render(
+ "transactional/cannot-create-alias-directory-disabled.html",
+ name=user.name,
+ alias=alias_address,
+ directory=directory_name,
),
)
diff --git a/templates/emails/transactional/cannot-create-alias-directory-disabled.html b/templates/emails/transactional/cannot-create-alias-directory-disabled.html
new file mode 100644
index 00000000..c30b70fe
--- /dev/null
+++ b/templates/emails/transactional/cannot-create-alias-directory-disabled.html
@@ -0,0 +1,20 @@
+{% extends "base.html" %}
+
+{% block content %}
+ {{ render_text("Hi " + name) }}
+
+ {% call text() %}
+ An email has been sent to the alias {{ alias }} that would be created automatically as you own the directory {{ directory }}
+ {% endcall %}
+
+ {% call text() %}
+ As on-the-fly alias creation is disabled on this directory, the alias isn't created.
+ {% endcall %}
+
+ {% call text() %}
+ If you aren't aware of this alias, that probably means someone has discovered about your directory and is abusing it.
+ {% endcall %}
+
+
+ {{ render_text('Thanks,
SimpleLogin Team.') }}
+{% endblock %}
diff --git a/templates/emails/transactional/cannot-create-alias-directory-disabled.txt b/templates/emails/transactional/cannot-create-alias-directory-disabled.txt
new file mode 100644
index 00000000..852ca610
--- /dev/null
+++ b/templates/emails/transactional/cannot-create-alias-directory-disabled.txt
@@ -0,0 +1,10 @@
+Hi {{name}}
+
+An email has been sent to the alias {{alias}} that would be created automatically as you own the directory {{directory}}.
+
+As the directory has the on-the-fly alias creation disabled, the alias isn't created.
+
+If you aren't aware of this alias, that probably means someone has discovered about your directory and is abusing it.
+
+Best,
+SimpleLogin team.