From cf48dec0eb454cd6187461e9ac5578e828e9b810 Mon Sep 17 00:00:00 2001 From: Michal Konecny Date: Apr 08 2024 12:10:22 +0000 Subject: [mailman3] Disable signup on mailman This module disables signup on mailman web UI. Signed-off-by: Michal Konecny --- diff --git a/roles/mailman3/files/django_fedora_nosignup.py b/roles/mailman3/files/django_fedora_nosignup.py new file mode 100644 index 0000000..22a2df0 --- /dev/null +++ b/roles/mailman3/files/django_fedora_nosignup.py @@ -0,0 +1,14 @@ +# Disable local signup + +from allauth.account.adapter import DefaultAccountAdapter +from allauth.socialaccount.adapter import DefaultSocialAccountAdapter + +class NoLocalSignUpAdapter(DefaultAccountAdapter): + + def is_open_for_signup(self, request): + return False + +class SignUpEnabledSocialAdapter(DefaultSocialAccountAdapter): + + def is_open_for_signup(self, request, sociallogin): + return True diff --git a/roles/mailman3/tasks/main.yml b/roles/mailman3/tasks/main.yml index 7daaa22..4730162 100644 --- a/roles/mailman3/tasks/main.yml +++ b/roles/mailman3/tasks/main.yml @@ -285,6 +285,19 @@ - mailman - db +- name: Install the fedora-specific modules + ansible.builtin.copy: + src: django_fedora_nosignup.py + dest: "{{ mailman_webui_confdir }}/django_fedora_nosignup.py" + owner: root + group: root + mode: 0644 + tags: + - config + - mailman + notify: + - reload apache + # # Plug HyperKitty into Mailman # diff --git a/roles/mailman3/templates/settings.py.j2 b/roles/mailman3/templates/settings.py.j2 index 1f163c8..9ab67c1 100644 --- a/roles/mailman3/templates/settings.py.j2 +++ b/roles/mailman3/templates/settings.py.j2 @@ -68,10 +68,10 @@ INSTALLED_APPS = ( 'django_q', 'hyperkitty', 'postorius', - {% for service_name, service_data in mailman_login.items() %} +{% for service_name, service_data in mailman_login.items() %} 'allauth.socialaccount.providers.{{ service_data.provider }}', - {% endfor %} - 'allauth.socialaccount.providers.openid', +{% endfor %} + 'allauth.socialaccount.providers.openid_connect', ) @@ -223,6 +223,9 @@ ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_EMAIL_VERIFICATION = "mandatory" ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https" ACCOUNT_UNIQUE_EMAIL = True +# Disable local signup +ACCOUNT_ADAPTER = "django_fedora_nosignup.NoLocalSignUpAdapter" +SOCIALACCOUNT_ADAPTER = "django_fedora_nosignup.SignUpEnabledSocialAdapter" SOCIALACCOUNT_PROVIDERS = { 'openid': {