diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 513fec2..403eac7 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -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 diff --git a/backend/scripts/create_admin.py b/backend/scripts/create_admin.py index f73bc86..ce1b8a4 100644 --- a/backend/scripts/create_admin.py +++ b/backend/scripts/create_admin.py @@ -42,23 +42,35 @@ 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() - - if not all([email, password, first_name, last_name]): - print("Error: All fields are required") - sys.exit(1) - + + 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 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) diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 18660bf..c487e25 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -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