fix: Skip default admin@local.host creation during container startup if an admin user already exists
This commit is contained in:
Binary file not shown.
@@ -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')
|
parser.add_argument('--password', type=str, default=os.getenv('ADMIN_PASSWORD', 'adminpassword'), help='Passwort für den Admin')
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
username = options['username'] or os.getenv('ADMIN_USERNAME', 'admin')
|
has_existing_admin = User.objects.filter(is_superuser=True).exists() or User.objects.filter(is_admin_user=True).exists()
|
||||||
email = options['email'] or os.getenv('ADMIN_EMAIL', 'admin@local.host')
|
explicit_env_set = bool(os.getenv('ADMIN_USERNAME') or os.getenv('ADMIN_EMAIL'))
|
||||||
password = options['password'] or os.getenv('ADMIN_PASSWORD', 'adminpassword')
|
|
||||||
|
|
||||||
# 1. Admin User
|
if has_existing_admin and not explicit_env_set and not os.getenv('FORCE_CREATE_ADMIN'):
|
||||||
user, created = User.objects.get_or_create(
|
self.stdout.write(self.style.SUCCESS("ℹ️ Mindestens ein Admin-Benutzer existiert bereits. Es wurde kein neuer Standard-Admin ('admin@local.host') erstellt."))
|
||||||
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}"))
|
|
||||||
else:
|
else:
|
||||||
changed = False
|
username = options['username'] or os.getenv('ADMIN_USERNAME', 'admin')
|
||||||
if not user.is_superuser or not user.is_admin_user or not user.is_approved or not user.is_active:
|
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_superuser = True
|
||||||
user.is_staff = True
|
user.is_staff = True
|
||||||
user.is_admin_user = True
|
user.is_admin_user = True
|
||||||
user.is_approved = True
|
user.is_approved = True
|
||||||
|
user.is_email_verified = True
|
||||||
user.is_active = True
|
user.is_active = True
|
||||||
changed = True
|
|
||||||
|
|
||||||
if os.getenv('ADMIN_PASSWORD'):
|
|
||||||
user.set_password(password)
|
|
||||||
changed = True
|
|
||||||
|
|
||||||
if changed:
|
|
||||||
user.save()
|
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:
|
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
|
# 2. Initial Base Skills
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user