Simplify admin user creation in entrypoint
This commit is contained in:
@@ -17,14 +17,6 @@ WORKDIR /app
|
|||||||
# Install dependencies
|
# Install dependencies
|
||||||
RUN apk add --no-cache mariadb mariadb-client mariadb-server-utils nginx bash
|
RUN apk add --no-cache mariadb mariadb-client mariadb-server-utils nginx bash
|
||||||
|
|
||||||
# Initialize MariaDB directories and schema
|
|
||||||
RUN mkdir -p /run/mysqld /var/lib/mysql && \
|
|
||||||
chown -R mysql:mysql /run/mysqld /var/lib/mysql && \
|
|
||||||
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
|
|
||||||
|
|
||||||
# Copy built frontend to nginx
|
|
||||||
COPY --from=builder /build/dist /usr/share/nginx/html
|
|
||||||
|
|
||||||
# Copy server files
|
# Copy server files
|
||||||
COPY server/package*.json ./server/
|
COPY server/package*.json ./server/
|
||||||
RUN cd ./server && npm ci
|
RUN cd ./server && npm ci
|
||||||
|
|||||||
+31
-5
@@ -18,7 +18,6 @@ echo "Creating database: $DB_NAME"
|
|||||||
mysql -h localhost -u root -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`;"
|
mysql -h localhost -u root -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`;"
|
||||||
|
|
||||||
echo "Creating user: $DB_USER"
|
echo "Creating user: $DB_USER"
|
||||||
# Create user for both localhost and %
|
|
||||||
mysql -h localhost -u root -e "CREATE USER IF NOT EXISTS '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD';"
|
mysql -h localhost -u root -e "CREATE USER IF NOT EXISTS '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD';"
|
||||||
mysql -h localhost -u root -e "CREATE USER IF NOT EXISTS '$DB_USER'@'%' IDENTIFIED BY '$DB_PASSWORD';"
|
mysql -h localhost -u root -e "CREATE USER IF NOT EXISTS '$DB_USER'@'%' IDENTIFIED BY '$DB_PASSWORD';"
|
||||||
mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';"
|
mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';"
|
||||||
@@ -30,11 +29,38 @@ ADMIN_DNI="${ADMIN_DNI:-00000000}"
|
|||||||
ADMIN_PASSWORD="${ADMIN_PASSWORD:-Admin123!}"
|
ADMIN_PASSWORD="${ADMIN_PASSWORD:-Admin123!}"
|
||||||
|
|
||||||
echo "Checking admin user..."
|
echo "Checking admin user..."
|
||||||
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")
|
TABLE_EXISTS=$(mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -N -e "SHOW TABLES LIKE 'usuarios';" 2>/dev/null || echo "")
|
||||||
if [ "$USER_COUNT" = "0" ]; then
|
|
||||||
ADMIN_ID=$(node -e "console.log(require('crypto').randomUUID())")
|
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)
|
TODAY=$(date +%Y-%m-%d)
|
||||||
HASH=$(node -e "const bcrypt=require('bcryptjs'); console.log(bcrypt.hashSync('$ADMIN_PASSWORD',10));")
|
|
||||||
|
# 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..."
|
||||||
|
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');"
|
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 "=========================================="
|
echo "=========================================="
|
||||||
echo "ADMIN CREDENTIALS:"
|
echo "ADMIN CREDENTIALS:"
|
||||||
|
|||||||
Reference in New Issue
Block a user