Add tester passenger creation script
This commit is contained in:
137
backend/auth/create_tester_passenger.php
Normal file
137
backend/auth/create_tester_passenger.php
Normal file
@@ -0,0 +1,137 @@
|
||||
<?php
|
||||
// ============================================================
|
||||
// create_tester_passenger.php
|
||||
// إنشاء أو تحديث مستخدم فاحص (Tester) خاص بمراجعي المتاجر (تطبيق الركاب)
|
||||
// ============================================================
|
||||
|
||||
require_once __DIR__ . '/../core/bootstrap.php';
|
||||
|
||||
// استقبال المتغيرات أو استخدام قيم افتراضية آمنة
|
||||
$email = filterRequest('email') ?? 'passenger_tester@siromove.com';
|
||||
$password = filterRequest('password') ?? 'SiroPassenger2026!';
|
||||
$phone = filterRequest('phone') ?? '962790000001';
|
||||
$firstName = filterRequest('first_name') ?? 'راكب';
|
||||
$lastName = filterRequest('last_name') ?? 'المتجر';
|
||||
$gender = 'Male';
|
||||
$birthdate = '1998-01-01';
|
||||
$site = 'Jordan';
|
||||
|
||||
if (empty($email) || empty($password) || empty($phone)) {
|
||||
jsonError("Missing required parameters: email, password, phone");
|
||||
}
|
||||
|
||||
try {
|
||||
$con = Database::get('main');
|
||||
$con->beginTransaction();
|
||||
|
||||
// 1. تشفير البيانات الحساسة للحفاظ على خصوصيتها وتطابق الهيكل
|
||||
$encryptedEmail = $encryptionHelper->encryptData($email);
|
||||
$encryptedPhone = $encryptionHelper->encryptData($phone);
|
||||
$encryptedFirstName = $encryptionHelper->encryptData($firstName);
|
||||
$encryptedLastName = $encryptionHelper->encryptData($lastName);
|
||||
$encryptedGender = $encryptionHelper->encryptData($gender);
|
||||
$encryptedBirthdate = $encryptionHelper->encryptData($birthdate);
|
||||
$encryptedSite = $encryptionHelper->encryptData($site);
|
||||
|
||||
// تشفير الحقول الافتراضية
|
||||
$encryptedSos = $encryptionHelper->encryptData('sos');
|
||||
$encryptedEducation = $encryptionHelper->encryptData('none');
|
||||
$encryptedEmployment = $encryptionHelper->encryptData('none');
|
||||
$encryptedMarital = $encryptionHelper->encryptData('none');
|
||||
|
||||
// 2. التحقق من وجود الراكب مسبقاً
|
||||
$stmtCheck = $con->prepare("SELECT id FROM passengers WHERE email = :email LIMIT 1");
|
||||
$stmtCheck->execute([':email' => $encryptedEmail]);
|
||||
$existingPassenger = $stmtCheck->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if ($existingPassenger) {
|
||||
$passengerId = $existingPassenger['id'];
|
||||
|
||||
// تحديث حساب الراكب الحالي
|
||||
$sqlPassenger = "UPDATE `passengers` SET
|
||||
`phone` = :phone,
|
||||
`password` = :password,
|
||||
`gender` = :gender,
|
||||
`birthdate` = :birthdate,
|
||||
`site` = :site,
|
||||
`first_name` = :first_name,
|
||||
`last_name` = :last_name,
|
||||
`status` = 'actives'
|
||||
WHERE `id` = :passengerId";
|
||||
|
||||
$stmtPassenger = $con->prepare($sqlPassenger);
|
||||
$stmtPassenger->execute([
|
||||
':phone' => $encryptedPhone,
|
||||
':password' => $password, // خزن كـ plaintext متوافقاً مع الاستعلام القديم
|
||||
':gender' => $encryptedGender,
|
||||
':birthdate' => $encryptedBirthdate,
|
||||
':site' => $encryptedSite,
|
||||
':first_name' => $encryptedFirstName,
|
||||
':last_name' => $encryptedLastName,
|
||||
':passengerId' => $passengerId
|
||||
]);
|
||||
$action = "updated";
|
||||
} else {
|
||||
// توليد معرّف فريد جديد للراكب
|
||||
$passengerId = bin2hex(random_bytes(8)); // 16-char hex ID
|
||||
|
||||
// إدراج حساب راكب جديد
|
||||
$sqlPassenger = "INSERT INTO `passengers`
|
||||
(id, phone, email, password, gender, status, birthdate, site, first_name, last_name, sosPhone, education, employmentType, maritalStatus)
|
||||
VALUES
|
||||
(:passengerId, :phone, :email, :password, :gender, 'actives', :birthdate, :site, :first_name, :last_name, :sos, :edu, :emp, :marital)";
|
||||
|
||||
$stmtPassenger = $con->prepare($sqlPassenger);
|
||||
$stmtPassenger->execute([
|
||||
':passengerId' => $passengerId,
|
||||
':phone' => $encryptedPhone,
|
||||
':email' => $encryptedEmail,
|
||||
':password' => $password, // خزن كـ plaintext متوافقاً مع الاستعلام القديم
|
||||
':gender' => $encryptedGender,
|
||||
':birthdate' => $encryptedBirthdate,
|
||||
':site' => $encryptedSite,
|
||||
':first_name' => $encryptedFirstName,
|
||||
':last_name' => $encryptedLastName,
|
||||
':sos' => $encryptedSos,
|
||||
':edu' => $encryptedEducation,
|
||||
':emp' => $encryptedEmployment,
|
||||
':marital' => $encryptedMarital
|
||||
]);
|
||||
$action = "created";
|
||||
}
|
||||
|
||||
// 3. التحقق وتفعيل رقم الهاتف في جدول phone_verification_passenger
|
||||
$stmtPVCheck = $con->prepare("SELECT id FROM phone_verification_passenger WHERE phone_number = :phone LIMIT 1");
|
||||
$stmtPVCheck->execute([':phone' => $phone]);
|
||||
$pvRecord = $stmtPVCheck->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if ($pvRecord) {
|
||||
$stmtPV = $con->prepare("UPDATE phone_verification_passenger SET verified = 1, status = 'actives' WHERE phone_number = :phone");
|
||||
$stmtPV->execute([':phone' => $phone]);
|
||||
} else {
|
||||
$stmtPV = $con->prepare("INSERT INTO phone_verification_passenger (phone_number, verified, status) VALUES (:phone, 1, 'actives')");
|
||||
$stmtPV->execute([':phone' => $phone]);
|
||||
}
|
||||
|
||||
$con->commit();
|
||||
|
||||
echo json_encode([
|
||||
"status" => "success",
|
||||
"message" => "Tester passenger successfully $action.",
|
||||
"details" => [
|
||||
"passenger_id" => $passengerId,
|
||||
"email" => $email,
|
||||
"password" => $password,
|
||||
"phone" => $phone,
|
||||
"status" => "actives"
|
||||
]
|
||||
], JSON_UNESCAPED_UNICODE);
|
||||
|
||||
} catch (Exception $e) {
|
||||
if (isset($con)) {
|
||||
$con->rollBack();
|
||||
}
|
||||
error_log("[Create Tester Passenger Error] " . $e->getMessage());
|
||||
jsonError("Server error: " . $e->getMessage());
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user