prepare($sql); $stmt->execute([':fp' => $fpHash]); $user = $stmt->fetch(PDO::FETCH_ASSOC); if ($user) { // التحقق من حالة الحساب if ($user['status'] === 'pending') { jsonError("حسابك قيد المراجعة حالياً. يرجى الانتظار للموافقة."); exit(); } elseif ($user['status'] === 'suspended') { jsonError("هذا الحساب معلق. يرجى التواصل مع الإدارة."); exit(); } elseif ($user['status'] !== 'approved') { jsonError("لم يتم تفعيل حسابك بعد."); exit(); } // التحقق من كلمة المرور if (password_verify($password, $user['password'])) { // فك تشفير البيانات للعرض في التطبيق $user['first_name'] = $encryptionHelper->decryptData($user['first_name']) ?: $user['first_name']; $user['last_name'] = $encryptionHelper->decryptData($user['last_name']) ?: $user['last_name']; $user['email'] = $encryptionHelper->decryptData($user['email']) ?: $user['email']; $user['phone'] = $encryptionHelper->decryptData($user['phone']) ?: $user['phone']; unset($user['password']); // توليد التوكن $jwtService = new JwtService($redis); $role = 'service'; $jwt = $jwtService->generateAccessToken($user['id'], $role, $audience); printSuccess([ "message" => "Login successful", "data" => $user, "jwt" => $jwt, "expires_in" => 3600 ]); } else { jsonError("Incorrect password"); } } else { jsonError("الجهاز غير مسجل لموظف خدمة."); } } catch (Exception $e) { error_log("[ServiceApp Login Error] " . $e->getMessage()); jsonError("Server error: " . $e->getMessage()); } exit();