Merge pull request #3210 from modoboa/fix/missing_perm_view_domainalias

Added missing permission view_domainalias to DomainAdmins group
This commit is contained in:
Antoine Nguyen
2024-03-20 13:07:30 +01:00
committed by GitHub
7 changed files with 84 additions and 5 deletions
-2
View File
@@ -470,8 +470,6 @@ class WritableAccountSerializer(AccountSerializer):
else:
password = validated_data.pop("password")
user.set_password(password)
if "language" not in validated_data:
user.language = settings.LANGUAGE_CODE
user.save(creator=creator)
if mailbox_data:
self._create_mailbox(creator, user, mailbox_data)
+6 -1
View File
@@ -6,6 +6,7 @@ from unittest import mock
import dns.resolver
from django.core.cache import cache
from django.test import override_settings
from django.urls import reverse
@@ -25,7 +26,7 @@ class DomainAPITestCase(ModoAPITestCase):
@classmethod
def setUpTestData(cls): # NOQA:N802
"""Create test data."""
super(DomainAPITestCase, cls).setUpTestData()
super().setUpTestData()
factories.populate_database()
cls.da_token = Token.objects.create(
user=core_models.User.objects.get(username="admin@test.com")
@@ -258,6 +259,10 @@ class AccountAPITestCase(ModoAPITestCase):
{"enable_admin_limits": False, "enable_domain_limits": False}, app="limits"
)
def tearDown(self):
# Make sure API calls do not get throttled
cache.clear()
def test_get_accounts(self):
"""Retrieve a list of accounts."""
url = reverse("v1:account-list")
@@ -0,0 +1,25 @@
# Generated by Django 4.2.11 on 2024-03-20 10:37
from django.db import migrations
def set_missing_permission(apps, schema_editor):
Permission = apps.get_model("auth", "Permission")
Group = apps.get_model("auth", "Group")
group = Group.objects.filter(name="DomainAdmins").first()
if not group:
# Fresh install, nothing to do
return
perm = Permission.objects.get(codename="view_domainalias")
group.permissions.add(perm)
class Migration(migrations.Migration):
dependencies = [
("admin", "0022_alter_alarm_domain"),
]
operations = [
migrations.RunPython(set_missing_permission, migrations.RunPython.noop),
]
+1
View File
@@ -78,6 +78,7 @@ PERMISSIONS = {
["admin", "senderaddress", "add_senderaddress"],
["admin", "senderaddress", "change_senderaddress"],
["admin", "senderaddress", "delete_senderaddress"],
["admin", "domainalias", "view_domainalias"],
],
"Resellers": [
["core", "user", "add_user"],
@@ -1,4 +1,5 @@
"""A management command to load Modoboa initial data:
"""
A management command to load Modoboa initial data.
* Create a default super admin if none exists
* Create groups and permissions
@@ -0,0 +1,45 @@
# Generated by Django 4.2.11 on 2024-03-20 11:11
from django.db import migrations, models
import modoboa.core.models
class Migration(migrations.Migration):
dependencies = [
("core", "0026_alter_localconfig__parameters_and_more"),
]
operations = [
migrations.AlterField(
model_name="user",
name="language",
field=models.CharField(
choices=[
("br", "breton"),
("cs", "čeština"),
("de", "deutsch"),
("en", "english"),
("el", "ελληνικά"),
("es", "español"),
("fi", "Suomalainen"),
("fr", "français"),
("it", "italiano"),
("ja", "日本の"),
("nl", "nederlands"),
("pt", "português"),
("pt-br", "português (BR)"),
("pl", "polski"),
("ro", "Română"),
("ru", "русский"),
("sv", "svenska"),
("tr", "türk"),
("zh-hant", "中文(台灣)"),
],
default=modoboa.core.models.get_default_language,
help_text="Prefered language to display pages.",
max_length=10,
verbose_name="language",
),
),
]
+5 -1
View File
@@ -36,6 +36,10 @@ except ImportError:
ldap_available = False
def get_default_language() -> str:
return settings.LANGUAGE_CODE
class User(AbstractUser):
"""Custom User model.
@@ -61,7 +65,7 @@ class User(AbstractUser):
language = models.CharField(
gettext_lazy("language"),
max_length=10,
default="en",
default=get_default_language,
choices=constants.LANGUAGES,
help_text=gettext_lazy("Prefered language to display pages."),
)