Commit 89495245 authored by Administrator's avatar Administrator

Update 6 files via Son of Anton

parent 664210e8
Pipeline #18 canceled with stage
...@@ -24,10 +24,10 @@ if ($stmt->fetch()) { ...@@ -24,10 +24,10 @@ if ($stmt->fetch()) {
exit(0); exit(0);
} }
$username = $_ENV['SA_USERNAME'] ?? 'admin'; $username = 'admin';
$password = $_ENV['SA_PASSWORD'] ?? 'Alarcade123#'; $password = 'Alarcade123#';
$nameEn = $_ENV['SA_NAME_EN'] ?? 'Mahmoud Aglan'; $nameEn = 'Mahmoud Aglan';
$nameAr = $_ENV['SA_NAME_AR'] ?? 'محمود عجلان'; $nameAr = 'محمود عجلان';
$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]); $hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]);
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
return [ return [
'name' => 'AL-ARCADE HR Platform', 'name' => 'AL-ARCADE HR Platform',
'version' => '3.0.0', 'version' => '3.0.0',
'url' => $_ENV['APP_URL'] ?? 'http://localhost', 'url' => 'https://hrsystem.caprover.al-arcade.com',
'debug' => (bool)($_ENV['APP_DEBUG'] ?? false), 'debug' => false,
'timezone' => 'Africa/Cairo', 'timezone' => 'Africa/Cairo',
'locale' => 'en', 'locale' => 'en',
'key' => $_ENV['APP_KEY'] ?? 'al-arcade-hr-v3-secret-key-change-me', 'key' => 'al-arcade-hr-v3-2025-secure-key-do-not-share-with-anyone-ever',
]; ];
\ No newline at end of file
<?php <?php
return [ return [
'host' => $_ENV['DB_HOST'] ?? 'srv-captain--mysql-db', 'host' => 'srv-captain--mysql-db',
'port' => (int)($_ENV['DB_PORT'] ?? 3306), 'port' => 3306,
'database' => $_ENV['DB_NAME'] ?? 'al_arcade_hr', 'database' => 'al_arcade_hr',
'username' => $_ENV['DB_USER'] ?? 'root', 'username' => 'root',
'password' => $_ENV['DB_PASS'] ?? 'Alarcade123#', 'password' => 'Alarcade123#',
'charset' => 'utf8mb4', 'charset' => 'utf8mb4',
'collation'=> 'utf8mb4_unicode_ci', 'collation'=> 'utf8mb4_unicode_ci',
'options' => [ 'options' => [
...@@ -12,7 +12,6 @@ return [ ...@@ -12,7 +12,6 @@ return [
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_STRINGIFY_FETCHES => false, PDO::ATTR_STRINGIFY_FETCHES => false,
// Disable SSL verification for internal Docker networking
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false, PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
], ],
]; ];
\ No newline at end of file
...@@ -5,12 +5,12 @@ echo "=== AL-ARCADE HR Platform v3.0 — Starting ===" ...@@ -5,12 +5,12 @@ echo "=== AL-ARCADE HR Platform v3.0 — Starting ==="
echo "Timestamp: $(date)" echo "Timestamp: $(date)"
echo "" echo ""
# ─── Read Environment ─── # ─── ALL VALUES HARDCODED — NO ENV VARS NEEDED ───
DB_HOST="${DB_HOST:-srv-captain--mysql-db}" DB_HOST="srv-captain--mysql-db"
DB_PORT="${DB_PORT:-3306}" DB_PORT="3306"
DB_NAME="${DB_NAME:-al_arcade_hr}" DB_NAME="al_arcade_hr"
DB_USER="${DB_USER:-root}" DB_USER="root"
DB_PASS="${DB_PASS:-Alarcade123#}" DB_PASS="Alarcade123#"
echo "Configuration:" echo "Configuration:"
echo " DB_HOST: ${DB_HOST}" echo " DB_HOST: ${DB_HOST}"
...@@ -23,14 +23,14 @@ echo "" ...@@ -23,14 +23,14 @@ echo ""
# ─── Common MySQL flags (disable SSL for internal Docker networking) ─── # ─── Common MySQL flags (disable SSL for internal Docker networking) ───
MYSQL_FLAGS="--ssl-mode=DISABLED" MYSQL_FLAGS="--ssl-mode=DISABLED"
# ─── Debug: DNS Resolution ─── # ─── DNS Resolution Check ───
echo "Attempting DNS resolution for ${DB_HOST}..." echo "Attempting DNS resolution for ${DB_HOST}..."
if getent hosts "${DB_HOST}" > /dev/null 2>&1; then if getent hosts "${DB_HOST}" > /dev/null 2>&1; then
RESOLVED_IP=$(getent hosts "${DB_HOST}" | awk '{ print $1 }') RESOLVED_IP=$(getent hosts "${DB_HOST}" | awk '{ print $1 }')
echo " ✅ ${DB_HOST} resolves to ${RESOLVED_IP}" echo " ✅ ${DB_HOST} resolves to ${RESOLVED_IP}"
else else
echo " ❌ CANNOT RESOLVE ${DB_HOST}" echo " ❌ CANNOT RESOLVE ${DB_HOST}"
echo " Starting Apache anyway — app will show DB errors." echo " Starting Apache anyway..."
exec "$@" exec "$@"
fi fi
echo "" echo ""
...@@ -43,13 +43,11 @@ ATTEMPT=0 ...@@ -43,13 +43,11 @@ ATTEMPT=0
while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
ATTEMPT=$((ATTEMPT + 1)) ATTEMPT=$((ATTEMPT + 1))
# Try with SSL disabled first, then without the flag for older clients
if mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} --silent 2>/dev/null; then if mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} --silent 2>/dev/null; then
echo "✅ MySQL is ready! (attempt ${ATTEMPT}/${MAX_ATTEMPTS})" echo "✅ MySQL is ready! (attempt ${ATTEMPT}/${MAX_ATTEMPTS})"
break break
fi fi
# Fallback: try with --skip-ssl for older mysql client versions
if mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" --skip-ssl --silent 2>/dev/null; then if mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" --skip-ssl --silent 2>/dev/null; then
echo "✅ MySQL is ready via --skip-ssl! (attempt ${ATTEMPT}/${MAX_ATTEMPTS})" echo "✅ MySQL is ready via --skip-ssl! (attempt ${ATTEMPT}/${MAX_ATTEMPTS})"
MYSQL_FLAGS="--skip-ssl" MYSQL_FLAGS="--skip-ssl"
...@@ -58,7 +56,6 @@ while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do ...@@ -58,7 +56,6 @@ while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
if [ $((ATTEMPT % 10)) -eq 0 ]; then if [ $((ATTEMPT % 10)) -eq 0 ]; then
echo " MySQL not ready... (attempt ${ATTEMPT}/${MAX_ATTEMPTS})" echo " MySQL not ready... (attempt ${ATTEMPT}/${MAX_ATTEMPTS})"
# Show the actual error for debugging
mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} 2>&1 || true mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} 2>&1 || true
else else
echo " MySQL not ready... (attempt ${ATTEMPT}/${MAX_ATTEMPTS})" echo " MySQL not ready... (attempt ${ATTEMPT}/${MAX_ATTEMPTS})"
...@@ -68,16 +65,12 @@ while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do ...@@ -68,16 +65,12 @@ while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
done done
if [ $ATTEMPT -ge $MAX_ATTEMPTS ]; then if [ $ATTEMPT -ge $MAX_ATTEMPTS ]; then
echo ""
echo "❌ FATAL: Could not connect to MySQL after ${MAX_ATTEMPTS} attempts" echo "❌ FATAL: Could not connect to MySQL after ${MAX_ATTEMPTS} attempts"
echo " Last error:" echo " Starting Apache anyway..."
mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} 2>&1 || true
echo ""
echo " Starting Apache anyway (app will show DB errors)..."
exec "$@" exec "$@"
fi fi
# ─── Helper function for mysql commands ─── # ─── Helper functions ───
run_mysql() { run_mysql() {
mysql -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} "$@" 2>&1 mysql -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} "$@" 2>&1
} }
...@@ -86,13 +79,13 @@ run_mysql_silent() { ...@@ -86,13 +79,13 @@ run_mysql_silent() {
mysql -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} -N "$@" 2>/dev/null mysql -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} -N "$@" 2>/dev/null
} }
# ─── Create Database if not exists ─── # ─── Create Database ───
echo "" echo ""
echo "Ensuring database '${DB_NAME}' exists..." echo "Ensuring database '${DB_NAME}' exists..."
run_mysql -e "CREATE DATABASE IF NOT EXISTS \`${DB_NAME}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" run_mysql -e "CREATE DATABASE IF NOT EXISTS \`${DB_NAME}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
echo "✅ Database ensured." echo "✅ Database ensured."
# ─── Run Schema if tables don't exist ─── # ─── Run Schema ───
TABLE_COUNT=$(run_mysql_silent -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DB_NAME}' AND TABLE_TYPE='BASE TABLE';" || echo "0") TABLE_COUNT=$(run_mysql_silent -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DB_NAME}' AND TABLE_TYPE='BASE TABLE';" || echo "0")
echo "Current table count: ${TABLE_COUNT}" echo "Current table count: ${TABLE_COUNT}"
...@@ -100,9 +93,8 @@ echo "Current table count: ${TABLE_COUNT}" ...@@ -100,9 +93,8 @@ echo "Current table count: ${TABLE_COUNT}"
if [ "${TABLE_COUNT}" -lt "70" ] 2>/dev/null; then if [ "${TABLE_COUNT}" -lt "70" ] 2>/dev/null; then
echo "Running schema migration (expected 73 tables, found ${TABLE_COUNT})..." echo "Running schema migration (expected 73 tables, found ${TABLE_COUNT})..."
# Try multiple possible paths for schema.sql
SCHEMA_FILE="" SCHEMA_FILE=""
for path in "/var/www/html/database/schema.sql" "/var/www/html/public/../database/schema.sql" "/var/www/html/schema.sql"; do for path in "/var/www/html/database/schema.sql" "/var/www/html/public/../database/schema.sql"; do
if [ -f "$path" ]; then if [ -f "$path" ]; then
SCHEMA_FILE="$path" SCHEMA_FILE="$path"
break break
...@@ -114,32 +106,18 @@ if [ "${TABLE_COUNT}" -lt "70" ] 2>/dev/null; then ...@@ -114,32 +106,18 @@ if [ "${TABLE_COUNT}" -lt "70" ] 2>/dev/null; then
run_mysql "${DB_NAME}" < "${SCHEMA_FILE}" run_mysql "${DB_NAME}" < "${SCHEMA_FILE}"
echo "✅ Schema applied." echo "✅ Schema applied."
# Verify
NEW_COUNT=$(run_mysql_silent -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DB_NAME}' AND TABLE_TYPE='BASE TABLE';" || echo "0") NEW_COUNT=$(run_mysql_silent -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DB_NAME}' AND TABLE_TYPE='BASE TABLE';" || echo "0")
echo "Tables after migration: ${NEW_COUNT}" echo "Tables after migration: ${NEW_COUNT}"
else else
echo "❌ schema.sql not found! Searched:" echo "❌ schema.sql not found!"
echo " /var/www/html/database/schema.sql"
echo ""
echo " Files in /var/www/html/database/:" echo " Files in /var/www/html/database/:"
ls -la /var/www/html/database/ 2>/dev/null || echo " (directory does not exist)" ls -la /var/www/html/database/ 2>/dev/null || echo " (directory does not exist)"
echo ""
echo " Files in /var/www/html/:"
ls -la /var/www/html/ 2>/dev/null | head -20
fi fi
# Run seed data # Seed data
SEED_FILE="" if [ -f "/var/www/html/database/seed.sql" ]; then
for path in "/var/www/html/database/seed.sql" "/var/www/html/seed.sql"; do echo "Running seed data..."
if [ -f "$path" ]; then run_mysql "${DB_NAME}" < "/var/www/html/database/seed.sql" || echo "⚠️ Some seed data may already exist."
SEED_FILE="$path"
break
fi
done
if [ -n "${SEED_FILE}" ]; then
echo "Running seed data from: ${SEED_FILE}"
run_mysql "${DB_NAME}" < "${SEED_FILE}" || echo "⚠️ Some seed data may already exist (duplicates skipped)."
echo "✅ Seed data applied." echo "✅ Seed data applied."
fi fi
else else
...@@ -153,8 +131,6 @@ if [ "${SA_EXISTS}" = "0" ]; then ...@@ -153,8 +131,6 @@ if [ "${SA_EXISTS}" = "0" ]; then
echo "Creating Super Admin..." echo "Creating Super Admin..."
if [ -f "/var/www/html/cli/create-superadmin.php" ]; then if [ -f "/var/www/html/cli/create-superadmin.php" ]; then
php /var/www/html/cli/create-superadmin.php php /var/www/html/cli/create-superadmin.php
else
echo "⚠️ create-superadmin.php not found"
fi fi
else else
echo "✅ Super Admin already exists. Skipping." echo "✅ Super Admin already exists. Skipping."
...@@ -173,5 +149,4 @@ echo "║ Starting Apache... ║" ...@@ -173,5 +149,4 @@ echo "║ Starting Apache... ║"
echo "╚══════════════════════════════════════════════════════╝" echo "╚══════════════════════════════════════════════════════╝"
echo "" echo ""
# ─── Start Apache ───
exec "$@" exec "$@"
\ No newline at end of file
...@@ -23,6 +23,7 @@ final class AuditLogger ...@@ -23,6 +23,7 @@ final class AuditLogger
$this->config['host'], $this->config['port'], $this->config['database'], $this->config['charset']); $this->config['host'], $this->config['port'], $this->config['database'], $this->config['charset']);
$this->pdo = new PDO($dsn, $this->config['username'], $this->config['password'], [ $this->pdo = new PDO($dsn, $this->config['username'], $this->config['password'], [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
]); ]);
} }
return $this->pdo; return $this->pdo;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment