mirror of
https://github.com/sissbruecker/linkding
synced 2024-11-24 20:33:04 +00:00
39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
import os
|
|
import logging
|
|
|
|
from django.core.management.base import BaseCommand
|
|
from django.contrib.auth import get_user_model
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Creates an initial superuser for a deployment using env variables"
|
|
|
|
def handle(self, *args, **options):
|
|
User = get_user_model()
|
|
superuser_name = os.getenv("LD_SUPERUSER_NAME", None)
|
|
superuser_password = os.getenv("LD_SUPERUSER_PASSWORD", None)
|
|
|
|
# Skip if option is undefined
|
|
if not superuser_name:
|
|
logger.info(
|
|
"Skip creating initial superuser, LD_SUPERUSER_NAME option is not defined"
|
|
)
|
|
return
|
|
|
|
# Skip if user already exists
|
|
user_exists = User.objects.filter(username=superuser_name).exists()
|
|
if user_exists:
|
|
logger.info("Skip creating initial superuser, user already exists")
|
|
return
|
|
|
|
user = User(username=superuser_name, is_superuser=True, is_staff=True)
|
|
|
|
if superuser_password:
|
|
user.set_password(superuser_password)
|
|
else:
|
|
user.set_unusable_password()
|
|
|
|
user.save()
|
|
logger.info("Created initial superuser")
|