feat: Add create_admin management command for easy initial admin user setup in Coolify/Docker
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
# Management package
|
||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
# Commands package
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,42 @@
|
|||||||
|
import os
|
||||||
|
from django.core.management.base import BaseCommand
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
|
||||||
|
User = get_user_model()
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = "Erstellt einen initialen Admin-Benutzer (Superuser) für das Portal."
|
||||||
|
|
||||||
|
def add_arguments(self, parser):
|
||||||
|
parser.add_argument('--username', type=str, default=os.getenv('ADMIN_USERNAME', 'admin'), help='Benutzername für den Admin')
|
||||||
|
parser.add_argument('--email', type=str, default=os.getenv('ADMIN_EMAIL', 'admin@beispiel.de'), help='E-Mail-Adresse für den Admin')
|
||||||
|
parser.add_argument('--password', type=str, default=os.getenv('ADMIN_PASSWORD', ''), help='Passwort für den Admin')
|
||||||
|
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
username = options['username']
|
||||||
|
email = options['email']
|
||||||
|
password = options['password']
|
||||||
|
|
||||||
|
if not password:
|
||||||
|
self.stderr.write(self.style.ERROR("Fehler: Bitte gib ein Passwort mit --password an oder setze ADMIN_PASSWORD als Umgebungsvariable."))
|
||||||
|
return
|
||||||
|
|
||||||
|
user, created = User.objects.get_or_create(
|
||||||
|
username=username,
|
||||||
|
defaults={'email': email}
|
||||||
|
)
|
||||||
|
|
||||||
|
user.email = email
|
||||||
|
user.set_password(password)
|
||||||
|
user.is_superuser = True
|
||||||
|
user.is_staff = True
|
||||||
|
user.is_admin_user = True
|
||||||
|
user.is_approved = True
|
||||||
|
user.is_email_verified = True
|
||||||
|
user.is_active = True
|
||||||
|
user.save()
|
||||||
|
|
||||||
|
if created:
|
||||||
|
self.stdout.write(self.style.SUCCESS(f"✅ Initialer Admin '{username}' ({email}) wurde erfolgreich erstellt!"))
|
||||||
|
else:
|
||||||
|
self.stdout.write(self.style.SUCCESS(f"✅ Passwort & Admin-Rechte für bestehenden Benutzer '{username}' ({email}) wurden aktualisiert!"))
|
||||||
Reference in New Issue
Block a user