From 91836d44fe058faa79c4214e8f448e37e9eb8db2 Mon Sep 17 00:00:00 2001 From: Sergio Nicolas Lavaise Date: Fri, 24 Apr 2026 14:51:46 -0300 Subject: [PATCH] Create admin via API after server starts --- docker-entrypoint.sh | 46 +++++++++++++++----------------------------- 1 file changed, 15 insertions(+), 31 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index b755593..837ecdd 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -9,7 +9,6 @@ for i in $(seq 1 60); do mysqladmin ping -h localhost --silent 2>/dev/null && break || sleep 1 done -# Get environment variables DB_NAME="${DB_NAME:-hospital}" DB_USER="${DB_USER:-hospital}" DB_PASSWORD="${DB_PASSWORD:-hospital123}" @@ -24,42 +23,27 @@ mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@ mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'%';" mysql -h localhost -u root -e "FLUSH PRIVILEGES;" -# Create admin user ADMIN_DNI="${ADMIN_DNI:-00000000}" ADMIN_PASSWORD="${ADMIN_PASSWORD:-Admin123!}" -echo "Checking admin user..." -TABLE_EXISTS=$(mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -N -e "SHOW TABLES LIKE 'usuarios';" 2>/dev/null || echo "") - -if [ -n "$TABLE_EXISTS" ]; then - USER_COUNT=$(mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -N -e "SELECT COUNT(*) FROM usuarios WHERE dni='$ADMIN_DNI';" 2>/dev/null || echo "0") - if [ "$USER_COUNT" = "0" ]; then - ADMIN_ID=$(cat /proc/sys/kernel/random/uuid) - TODAY=$(date +%Y-%m-%d) - - # Insert user with empty password hash - needs password change - mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -e " - INSERT INTO usuarios (id,apellido,nombre,dni,fechaNacimiento,email,rol,passwordHash,fechaCreacion) - VALUES ('$ADMIN_ID','Administrador','Sistema','$ADMIN_DNI','$TODAY','admin@hospital.local','admin','','$TODAY'); - " - - # Use change-password API to set password - curl -s -X POST "http://localhost:4000/api/auth/change-password" \ - -H "Content-Type: application/json" \ - -d "{\"dni\":\"$ADMIN_DNI\",\"oldPassword\":\"\",\"newPassword\":\"$ADMIN_PASSWORD\"}" 2>/dev/null || true - - echo "==========================================" - echo "ADMIN CREDENTIALS:" - echo "DNI: $ADMIN_DNI" - echo "Password: $ADMIN_PASSWORD" - echo "==========================================" - fi -fi - echo "Starting nginx..." nginx & -echo "Starting API server..." +echo "Waiting for API server..." +sleep 3 + +echo "Creating admin user via API..." +curl -s -X POST "http://localhost:4000/api/usuarios" \ + -H "Content-Type: application/json" \ + -d "{\"apellido\":\"Administrador\",\"nombre\":\"Sistema\",\"dni\":\"$ADMIN_DNI\",\"fechaNacimiento\":\"2024-01-01\",\"email\":\"admin@hospital.local\",\"rol\":\"admin\",\"password\":\"$ADMIN_PASSWORD\"}" \ + || echo "Admin user may already exist" + +echo "==========================================" +echo "ADMIN CREDENTIALS:" +echo "DNI: $ADMIN_DNI" +echo "Password: $ADMIN_PASSWORD" +echo "==========================================" + exec node server/api-mariadb.js mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -e "INSERT INTO usuarios (id,apellido,nombre,dni,fechaNacimiento,email,rol,passwordHash,fechaCreacion) VALUES ('$ADMIN_ID','Administrador','Sistema','$ADMIN_DNI','$TODAY','admin@hospital.local','admin','$HASH','$TODAY');" echo "=========================================="