From 356b4e80baa243c55859d09ba8ee48a5e5c13300 Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Fri, 14 Feb 2025 12:46:56 +0100
Subject: [PATCH 1/3] Allow unauthenticated users to query public domains

---
 aleksis/apps/postbuero/schema.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/aleksis/apps/postbuero/schema.py b/aleksis/apps/postbuero/schema.py
index 27762b8..9e7bcab 100644
--- a/aleksis/apps/postbuero/schema.py
+++ b/aleksis/apps/postbuero/schema.py
@@ -128,9 +128,13 @@ class Query(graphene.ObjectType):
 
     @staticmethod
     def resolve_mail_domains_for_user(root, info, **kwargs):
-        mail_domains = get_objects_for_user(
-            info.context.user, "postbuero.can_use_domain", MailDomain.objects.all()
-        ).union(MailDomain.objects.filter(is_public=True))
+        mail_domains = MailDomain.objects.filter(is_public=True)
+        if not info.context.user.is_anonymous:
+            mail_domains = mail_domains.union(
+                get_objects_for_user(
+                    info.context.user, "postbuero.can_use_domain", MailDomain.objects.all()
+                )
+            )
         return mail_domains
 
     @staticmethod
-- 
GitLab


From 4bee4dc3bb757aa49bfda8e360b62111e89d962a Mon Sep 17 00:00:00 2001
From: magicfelix <felix@felix-zauberer.de>
Date: Fri, 14 Feb 2025 13:50:19 +0100
Subject: [PATCH 2/3] Add MailAddressInputType

---
 aleksis/apps/postbuero/schema.py | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/aleksis/apps/postbuero/schema.py b/aleksis/apps/postbuero/schema.py
index 9e7bcab..e98cc55 100644
--- a/aleksis/apps/postbuero/schema.py
+++ b/aleksis/apps/postbuero/schema.py
@@ -27,6 +27,11 @@ class MailAddressType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType)
         filter_fields = {"domain": ["in"]}
 
 
+class MailAddressInputType(graphene.InputObjectType):
+    local_part = graphene.String(required=True)
+    domain = graphene.ID(required=True)
+
+
 class MailDomainType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType):
     class Meta:
         model = MailDomain
-- 
GitLab


From 50d4d6cf4d4e2e087e732a471c1d3bc88b062e82 Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Fri, 14 Feb 2025 17:23:23 +0100
Subject: [PATCH 3/3] Reformat

---
 .../mail_domains/MailDomainCRUDList.vue       |  2 +-
 .../apps/postbuero/frontend/messages/de.json  | 64 +++++++++----------
 aleksis/apps/postbuero/schema.py              |  6 +-
 3 files changed, 35 insertions(+), 37 deletions(-)

diff --git a/aleksis/apps/postbuero/frontend/components/mail_domains/MailDomainCRUDList.vue b/aleksis/apps/postbuero/frontend/components/mail_domains/MailDomainCRUDList.vue
index 57d0521..f80a32a 100644
--- a/aleksis/apps/postbuero/frontend/components/mail_domains/MailDomainCRUDList.vue
+++ b/aleksis/apps/postbuero/frontend/components/mail_domains/MailDomainCRUDList.vue
@@ -116,7 +116,7 @@ export default {
       return item;
     },
     getDomainName(item) {
-      console.log('getDomainName', item);
+      console.log("getDomainName", item);
       return item.domain;
     },
   },
diff --git a/aleksis/apps/postbuero/frontend/messages/de.json b/aleksis/apps/postbuero/frontend/messages/de.json
index 7efd4b5..a300428 100644
--- a/aleksis/apps/postbuero/frontend/messages/de.json
+++ b/aleksis/apps/postbuero/frontend/messages/de.json
@@ -1,35 +1,35 @@
 {
-    "postbuero": {
-        "mail_addresses": {
-            "menu_title": "E-Mail-Adressen verwalten",
-            "title_plural": "Verwalte eigene E-Mail-Adressen",
-            "data_table": {
-                "mail_address": "E-Mail-Adresse",
-                "domain": "Domäne",
-                "local_part": "Lokalteil",
-                "errors": {
-                    "local_part_invalid_characters": "Dieses Feld kann nur alphanumerische Zeichen und die folgenden enthalten: : .!#$%&'*+-/=?^_`{|}~",
-                    "local_part_disallowed": "Dieser Lokalteil ist nicht erlaubt."
-                }
-            },
-            "create": "Neue E-Mail-Adresse erstellen"
+  "postbuero": {
+    "mail_addresses": {
+      "menu_title": "E-Mail-Adressen verwalten",
+      "title_plural": "Verwalte eigene E-Mail-Adressen",
+      "data_table": {
+        "mail_address": "E-Mail-Adresse",
+        "domain": "Domäne",
+        "local_part": "Lokalteil",
+        "errors": {
+          "local_part_invalid_characters": "Dieses Feld kann nur alphanumerische Zeichen und die folgenden enthalten: : .!#$%&'*+-/=?^_`{|}~",
+          "local_part_disallowed": "Dieser Lokalteil ist nicht erlaubt."
+        }
+      },
+      "create": "Neue E-Mail-Adresse erstellen"
+    },
+    "mail_domains": {
+      "title_plural": "E-Mail-Domänen verwalten",
+      "data_table": {
+        "domain": "Domäne",
+        "is_public": "Öffentlich",
+        "filters": {
+          "show_all": "Alle anzeigen",
+          "only_public": "Nur öffentliche Domänen",
+          "only_non_public": "Nur nicht-öffentliche Domänen"
         },
-        "mail_domains": {
-            "title_plural": "E-Mail-Domänen verwalten",
-            "data_table": {
-                "domain": "Domäne",
-                "is_public": "Öffentlich",
-                "filters": {
-                    "show_all": "Alle anzeigen",
-                    "only_public": "Nur öffentliche Domänen",
-                    "only_non_public": "Nur nicht-öffentliche Domänen"
-                },
-                "errors": {
-                    "domain_invalid": "Dieses Feld ist verpflichtend und muss einen validen Domänennamen beinhalten."
-                }
-            },
-            "create": "Neue Mail-Domäne erstellen"
-        },
-        "menu_title": "E-Mails"
-    }
+        "errors": {
+          "domain_invalid": "Dieses Feld ist verpflichtend und muss einen validen Domänennamen beinhalten."
+        }
+      },
+      "create": "Neue Mail-Domäne erstellen"
+    },
+    "menu_title": "E-Mails"
+  }
 }
diff --git a/aleksis/apps/postbuero/schema.py b/aleksis/apps/postbuero/schema.py
index e98cc55..0fc7c5b 100644
--- a/aleksis/apps/postbuero/schema.py
+++ b/aleksis/apps/postbuero/schema.py
@@ -55,7 +55,7 @@ class MailAddressBatchCreateMutation(BaseBatchCreateMutation):
         for address in input:
             domain = MailDomain.objects.get(id=address.domain)
             if has_person(info.context.user) and info.context.user.has_perm(
-                    "postbuero.can_use_domain_rule", domain
+                "postbuero.can_use_domain_rule", domain
             ):
                 return
             raise PermissionDenied()
@@ -87,9 +87,7 @@ class MailAddressBatchCreateMutation(BaseBatchCreateMutation):
             # Create activity
             act = Activity(
                 title=_("You have added an email address"),
-                description=_(
-                    f"You have added the email address {address} to your profile."
-                ),
+                description=_(f"You have added the email address {address} to your profile."),
                 app="Postbuero",
                 user=mail_context["person"],
             )
-- 
GitLab