feat: add environment variable support for admin user creation in backend
All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 2m31s

This commit is contained in:
2026-04-21 14:34:58 -04:00
parent cdfaf7ead1
commit 3d599243c7
3 changed files with 39 additions and 17 deletions

View File

@@ -147,6 +147,10 @@ jobs:
SEED_PIN=${{ secrets.SEED_PIN }}
SEED_FIRST_NAME=${{ secrets.SEED_FIRST_NAME }}
SEED_LAST_NAME=${{ secrets.SEED_LAST_NAME }}
ADMIN_EMAIL=${{ secrets.ADMIN_EMAIL }}
ADMIN_PASSWORD=${{ secrets.ADMIN_PASSWORD }}
ADMIN_FIRST_NAME=${{ secrets.ADMIN_FIRST_NAME }}
ADMIN_LAST_NAME=${{ secrets.ADMIN_LAST_NAME }}
EOF
echo "SECRET_KEY is set: $(grep -q 'SECRET_KEY=' .env && echo YES || echo NO)"
@@ -161,6 +165,8 @@ jobs:
sleep 10
echo "Seeding test user..."
docker-compose -f docker-compose.test.yml exec -T chores-test-app-backend python scripts/seed_test_user.py
echo "Creating admin user..."
docker-compose -f docker-compose.test.yml exec -T chores-test-app-backend python scripts/create_admin.py
- name: Send mail
if: always() # Runs on success or failure

View File

@@ -43,22 +43,34 @@ def create_admin_user(email: str, password: str, first_name: str, last_name: str
if __name__ == '__main__':
print("=== Create Admin User ===\n")
email = input("Email: ").strip()
password = input("Password: ").strip()
first_name = input("First name: ").strip()
last_name = input("Last name: ").strip()
env_email = os.environ.get('ADMIN_EMAIL')
env_password = os.environ.get('ADMIN_PASSWORD')
env_first_name = os.environ.get('ADMIN_FIRST_NAME')
env_last_name = os.environ.get('ADMIN_LAST_NAME')
if not all([email, password, first_name, last_name]):
print("Error: All fields are required")
sys.exit(1)
if env_email and env_password:
email = env_email
password = env_password
first_name = env_first_name or 'First Name'
last_name = env_last_name or 'Last Name'
print(f"Using environment variables for admin user '{email}'")
else:
email = input("Email: ").strip()
password = input("Password: ").strip()
first_name = input("First name: ").strip()
last_name = input("Last name: ").strip()
if not all([email, password, first_name, last_name]):
print("Error: All fields are required")
sys.exit(1)
confirm = input(f"\nCreate admin user '{email}'? (yes/no): ").strip().lower()
if confirm != 'yes':
print("Cancelled")
sys.exit(0)
if len(password) < 8:
print("Error: Password must be at least 8 characters")
sys.exit(1)
confirm = input(f"\nCreate admin user '{email}'? (yes/no): ").strip().lower()
if confirm == 'yes':
create_admin_user(email, password, first_name, last_name)
else:
print("Cancelled")
create_admin_user(email, password, first_name, last_name)

View File

@@ -19,6 +19,10 @@ services:
- SEED_PIN=${SEED_PIN}
- SEED_FIRST_NAME=${SEED_FIRST_NAME}
- SEED_LAST_NAME=${SEED_LAST_NAME}
- ADMIN_EMAIL=${ADMIN_EMAIL}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
- ADMIN_FIRST_NAME=${ADMIN_FIRST_NAME}
- ADMIN_LAST_NAME=${ADMIN_LAST_NAME}
volumes:
- chores-test-app-backend-data:/app/data