From 508a6ce1d02913354aeaddafb8d161fe831c5862 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sat, 1 Aug 2026 03:19:55 +0300 Subject: [PATCH] Fix wallet: bake composer vendor into Docker image --- backend/auth/passenger/register.php | 2 +- docker/docker-compose.yml | 4 +- docker/php/Dockerfile.fpm | 5 ++ payment_server/v2/main/connect.php | 71 ++++++++++++++++------------- 4 files changed, 47 insertions(+), 35 deletions(-) diff --git a/backend/auth/passenger/register.php b/backend/auth/passenger/register.php index 90ffe43..100674a 100644 --- a/backend/auth/passenger/register.php +++ b/backend/auth/passenger/register.php @@ -63,7 +63,7 @@ try { $firstName_encrypted = $encryptionHelper->encryptData($firstName); $lastName_encrypted = $encryptionHelper->encryptData($lastName); $email_encrypted = $encryptionHelper->encryptData($email); - $uniqueId = substr(md5($phoneNumber), 0, 20); + $uniqueId = substr(md5($phoneNumber), 0, 16); $password_hashed = password_hash($email . $uniqueId, PASSWORD_DEFAULT); $unknown_encrypted = $encryptionHelper->encryptData("unknown yet"); diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 908fb00..c654706 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -30,8 +30,8 @@ services: # التقسيم لأبعد من هذا لا يضيف أداءً — نفس الصورة، نفس النواة. php: build: - context: ./php - dockerfile: Dockerfile.fpm + context: .. + dockerfile: docker/php/Dockerfile.fpm args: PHP_VERSION: "${PHP_VERSION:-8.2}" volumes: diff --git a/docker/php/Dockerfile.fpm b/docker/php/Dockerfile.fpm index 46c4e5c..afc2698 100644 --- a/docker/php/Dockerfile.fpm +++ b/docker/php/Dockerfile.fpm @@ -6,4 +6,9 @@ ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/do RUN chmod +x /usr/local/bin/install-php-extensions && \ install-php-extensions mysqli pdo_mysql redis opcache gd zip @composer +# تثبيت مكتبات سيرفر المدفوعات (firebase/php-jwt وغيره) +# هذا يخبز vendor/ داخل الصورة مباشرة حتى لا يعتمد على مجلد خارجي +COPY payment_server/v2/composer.json payment_server/v2/composer.lock /var/www/v2/ +RUN cd /var/www/v2 && composer install --no-dev --no-interaction --optimize-autoloader + WORKDIR /var/www diff --git a/payment_server/v2/main/connect.php b/payment_server/v2/main/connect.php index 1b4489d..b5874c9 100755 --- a/payment_server/v2/main/connect.php +++ b/payment_server/v2/main/connect.php @@ -1,54 +1,61 @@ false, - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_EMULATE_PREPARES => false, + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8" + PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8", ]; - $user = getenv('DB_PAYMENT_USER') ?: (getenv('USER') ?: 'root'); - $pass = getenv('DB_PAYMENT_PASS') ?: (getenv('PASS') ?: getenv('MYSQL_ROOT_PASSWORD')); $con = new PDO($dsn, $user, $pass, $options); - -// echo $con; - // --- JWT Authentication --- - include __DIR__ . "/functions.php"; // Include the functions file - - $decodedToken = authenticateJWT(); // Call the authentication function + // 5. JWT Authentication + include __DIR__ . "/functions.php"; + $decodedToken = authenticateJWT(); } catch (PDOException $e) { - error_log($e->getMessage()); - http_response_code(500); // Internal Server Error + error_log('[WALLET] DB Error: ' . $e->getMessage()); + http_response_code(500); echo json_encode(['error' => 'A database error occurred.']); exit; }