From 39d13c0447b7dc1e4b8f960fb7cdf0797b4445fc Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Tue, 16 Jan 2024 01:07:41 +0100 Subject: [PATCH] add management command to create a tenant Signed-off-by: Jens Langhammer --- .../tenants/management/commands/__init__.py | 0 .../tenants/management/commands/add_tenant.py | 31 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 authentik/tenants/management/commands/__init__.py create mode 100644 authentik/tenants/management/commands/add_tenant.py diff --git a/authentik/tenants/management/commands/__init__.py b/authentik/tenants/management/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/authentik/tenants/management/commands/add_tenant.py b/authentik/tenants/management/commands/add_tenant.py new file mode 100644 index 000000000..93c9072cc --- /dev/null +++ b/authentik/tenants/management/commands/add_tenant.py @@ -0,0 +1,31 @@ +"""authentik add tenant command""" +from django.core.management.base import BaseCommand +from django.utils.text import slugify +from structlog.stdlib import get_logger + +from authentik.lib.config import CONFIG +from authentik.tenants.models import Domain, Tenant + +LOGGER = get_logger() + + +class Command(BaseCommand): + """Add tenant""" + + def add_arguments(self, parser): + parser.add_argument("--domain", nargs="+", type=str) + parser.add_argument( + "name", + type=str, + ) + + def handle(self, *args, **options): + """Add tenant""" + if not CONFIG.get_bool("tenants.enabled"): + self.stderr.write("Tenant not enabled") + return + tenant = Tenant.objects.create(name=options["name"], schema_name=slugify(options["name"])) + LOGGER.info("Created tenant", uuid=str(tenant.pk)) + for domain in options["domain"]: + Domain.objects.create(tenant=tenant, domain=domain) + LOGGER.info("Created domain", domain=domain)