Skip to content

Commit

Permalink
Merge pull request #3210 from modoboa/fix/missing_perm_view_domainalias
Browse files Browse the repository at this point in the history
Added missing permission view_domainalias to DomainAdmins group
  • Loading branch information
tonioo committed Mar 20, 2024
2 parents 71b2ba9 + 8e08b36 commit f1f9e8a
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 5 deletions.
2 changes: 0 additions & 2 deletions modoboa/admin/api/v1/serializers.py
Expand Up @@ -470,8 +470,6 @@ def create(self, validated_data):
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)
Expand Down
7 changes: 6 additions & 1 deletion modoboa/admin/api/v1/tests.py
Expand Up @@ -6,6 +6,7 @@

import dns.resolver

from django.core.cache import cache
from django.test import override_settings
from django.urls import reverse

Expand All @@ -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")
Expand Down Expand Up @@ -258,6 +259,10 @@ def setUp(self):
{"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")
Expand Down
25 changes: 25 additions & 0 deletions modoboa/admin/migrations/0023_auto_20240320_1037.py
@@ -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 change: 1 addition & 0 deletions modoboa/core/constants.py
Expand Up @@ -78,6 +78,7 @@
["admin", "senderaddress", "add_senderaddress"],
["admin", "senderaddress", "change_senderaddress"],
["admin", "senderaddress", "delete_senderaddress"],
["admin", "domainalias", "view_domainalias"],
],
"Resellers": [
["core", "user", "add_user"],
Expand Down
3 changes: 2 additions & 1 deletion modoboa/core/management/commands/load_initial_data.py
@@ -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
Expand Down
45 changes: 45 additions & 0 deletions modoboa/core/migrations/0027_alter_user_language.py
@@ -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",
),
),
]
6 changes: 5 additions & 1 deletion modoboa/core/models.py
Expand Up @@ -36,6 +36,10 @@
ldap_available = False


def get_default_language() -> str:
return settings.LANGUAGE_CODE


class User(AbstractUser):
"""Custom User model.
Expand All @@ -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."),
)
Expand Down

0 comments on commit f1f9e8a

Please sign in to comment.