diff --git a/backend/apps/users/management/commands/__pycache__/create_admin.cpython-314.pyc b/backend/apps/users/management/commands/__pycache__/create_admin.cpython-314.pyc index 9d7d1b7..aa75b57 100644 Binary files a/backend/apps/users/management/commands/__pycache__/create_admin.cpython-314.pyc and b/backend/apps/users/management/commands/__pycache__/create_admin.cpython-314.pyc differ diff --git a/backend/apps/users/management/commands/create_admin.py b/backend/apps/users/management/commands/create_admin.py index 52d14d9..77c729a 100644 --- a/backend/apps/users/management/commands/create_admin.py +++ b/backend/apps/users/management/commands/create_admin.py @@ -5,38 +5,68 @@ 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." + help = "Erstellt einen initialen Admin-Benutzer (Superuser) sowie Basis-Qualifikationen 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') + parser.add_argument('--email', type=str, default=os.getenv('ADMIN_EMAIL', 'admin@local.host'), help='E-Mail-Adresse für den Admin') + parser.add_argument('--password', type=str, default=os.getenv('ADMIN_PASSWORD', 'adminpassword'), 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 + username = options['username'] or os.getenv('ADMIN_USERNAME', 'admin') + email = options['email'] or os.getenv('ADMIN_EMAIL', 'admin@local.host') + password = options['password'] or os.getenv('ADMIN_PASSWORD', 'adminpassword') + # 1. Admin User 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!")) + 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() + self.stdout.write(self.style.SUCCESS(f"✅ Initialer Admin '{username}' ({email}) wurde erstellt! Passwort: {password}")) else: - self.stdout.write(self.style.SUCCESS(f"✅ Passwort & Admin-Rechte für bestehenden Benutzer '{username}' ({email}) wurden aktualisiert!")) + changed = False + if not user.is_superuser or not user.is_admin_user or not user.is_approved or not user.is_active: + user.is_superuser = True + user.is_staff = True + user.is_admin_user = True + user.is_approved = True + user.is_active = True + changed = True + + if os.getenv('ADMIN_PASSWORD'): + user.set_password(password) + changed = True + + if changed: + user.save() + self.stdout.write(self.style.SUCCESS(f"✅ Admin-Rechte für bestehenden Benutzer '{username}' wurden aktualisiert.")) + else: + self.stdout.write(self.style.SUCCESS(f"ℹ️ Admin-Benutzer '{username}' existiert bereits.")) + + # 2. Initial Base Skills + try: + from apps.events.models import Skill + Skill.objects.get_or_create( + name="Ersthelfer", + defaults={'description': 'Gültiger Erste-Hilfe-Schein', 'color': '#ef4444'} + ) + Skill.objects.get_or_create( + name="Bar-Erfahrung", + defaults={'description': 'Erfahrung an der Zapfanlage', 'color': '#3b82f6'} + ) + Skill.objects.get_or_create( + name="Führerschein B", + defaults={'description': 'PKW / Transporter fahren', 'color': '#10b981'} + ) + except Exception as e: + self.stderr.write(self.style.WARNING(f"Hinweis zu Skills: {e}"))