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 aa75b57..b77c8af 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 77c729a..c55d924 100644 --- a/backend/apps/users/management/commands/create_admin.py +++ b/backend/apps/users/management/commands/create_admin.py @@ -13,45 +13,51 @@ class Command(BaseCommand): 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'] 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') + has_existing_admin = User.objects.filter(is_superuser=True).exists() or User.objects.filter(is_admin_user=True).exists() + explicit_env_set = bool(os.getenv('ADMIN_USERNAME') or os.getenv('ADMIN_EMAIL')) - # 1. Admin User - user, created = User.objects.get_or_create( - username=username, - defaults={'email': email} - ) - - if created: - 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}")) + if has_existing_admin and not explicit_env_set and not os.getenv('FORCE_CREATE_ADMIN'): + self.stdout.write(self.style.SUCCESS("ℹ️ Mindestens ein Admin-Benutzer existiert bereits. Es wurde kein neuer Standard-Admin ('admin@local.host') erstellt.")) else: - changed = False - if not user.is_superuser or not user.is_admin_user or not user.is_approved or not user.is_active: + 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} + ) + + if created: + 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 - 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.")) + self.stdout.write(self.style.SUCCESS(f"✅ Initialer Admin '{username}' ({email}) wurde erstellt! Passwort: {password}")) else: - self.stdout.write(self.style.SUCCESS(f"ℹ️ Admin-Benutzer '{username}' existiert bereits.")) + 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: