multi-domain support
This commit is contained in:
1 parent
58f46d0bbe
commit
a1c6b656d7
14 files changed
+167
-46
No files matched your search
@@ -1,6 +1,6 @@
|
||||
from flask import flash
|
||||
|
||||
from max.db import EmailAlreadyExists, create_alias
|
||||
from max.db import EmailAlreadyExists, create_alias, get_domains
|
||||
from max.permissions import AllowAdminOrSelf
|
||||
from max.translations import t
|
||||
|
||||
@@ -26,7 +26,21 @@ class AliasCreate(
|
||||
else:
|
||||
self.email = email
|
||||
|
||||
if not self.is_email_valid(email):
|
||||
if self.user.can_use_different_alias_domain:
|
||||
domain = self.request.form.get("domain")
|
||||
if not isinstance(domain, str) or not domain:
|
||||
flash(t("Domain must be given"), category="error")
|
||||
error = True
|
||||
elif domain not in get_domains():
|
||||
flash(t("Invalid domain"), category="error")
|
||||
error = True
|
||||
else:
|
||||
self.domain = domain
|
||||
else:
|
||||
self.domain = self.get_user_domain()
|
||||
|
||||
full_email = f"{self.email}@{self.domain}"
|
||||
if not self.is_email_valid(full_email):
|
||||
error = True
|
||||
|
||||
enabled = self.request.form.get("enabled")
|
||||
@@ -49,7 +63,7 @@ class AliasCreate(
|
||||
return # force re-rendering
|
||||
|
||||
try:
|
||||
create_alias(self.email, self.user, self.enabled, self.note)
|
||||
create_alias(full_email, self.user, self.enabled, self.note)
|
||||
except EmailAlreadyExists as e:
|
||||
if self.auth_user.is_admin:
|
||||
flash(
|
||||
@@ -61,14 +75,24 @@ class AliasCreate(
|
||||
return
|
||||
|
||||
flash(
|
||||
t("Creation of alias {email} was successful!", email=email),
|
||||
t("Creation of alias {email} was successful!", email=full_email),
|
||||
category="success",
|
||||
)
|
||||
return self.redirect()
|
||||
|
||||
def get_context(self):
|
||||
context = super().get_context()
|
||||
for key in ("email", "enabled", "note"):
|
||||
for key in ("email", "domain", "enabled", "note"):
|
||||
if hasattr(self, key):
|
||||
context[key] = getattr(self, key)
|
||||
context[
|
||||
"can_use_different_alias_domain"
|
||||
] = self.user.can_use_different_alias_domain
|
||||
if self.user.can_use_different_alias_domain:
|
||||
context["domains"] = get_domains()
|
||||
else:
|
||||
context["domain"] = self.get_user_domain()
|
||||
return context
|
||||
|
||||
def get_user_domain(self):
|
||||
return self.user.email.split("@")[1]
|
||||
Reference in new issue
Block a user