This commit is contained in:
Hamza-Ayed
2026-05-01 00:47:30 +03:00
parent 0c6a4f9491
commit 312608de93
9 changed files with 394 additions and 23 deletions

View File

@@ -24,25 +24,50 @@ try {
$admin = $stmt->fetch(PDO::FETCH_ASSOC);
if ($admin) {
// التحقق من كلمة المرور الهاش
// 1. التحقق من حالة الحساب
if ($admin['status'] === 'pending') {
jsonError("حسابك قيد المراجعة حالياً. يرجى الانتظار للموافقة.");
exit;
} elseif ($admin['status'] === 'suspended') {
jsonError("هذا الحساب معلق. يرجى التواصل مع المدير.");
exit;
} elseif ($admin['status'] === 'rejected') {
jsonError("تم رفض طلب الانضمام لهذا الحساب.");
exit;
}
// 2. التحقق من كلمة المرور
if (password_verify($password, $admin['password'])) {
// فك تشفير الاسم للعرض في التطبيق
$admin['name'] = $encryptionHelper->decryptData($admin['name']) ?: $admin['name'];
unset($admin['password']);
$jwtService = new JwtService($redis);
$role = $admin['role'] ?? 'admin';
// 3. توليد رمز تحقق OTP وإرساله عبر WhatsApp
$otp = rand(10000, 99999);
$phone = $admin['phone'] ?? ''; // تأكد من وجود حقل الهاتف في الجدول
// توليد توكن الدخول مع ربطه ببصمة الجهاز
$jwt = $jwtService->generateAccessToken($admin['id'], $role, $audience, $fingerprint);
if (empty($phone)) {
// Fallback للأرقام المسموح لها إذا لم يكن الرقم مسجلاً في الجدول
// (قد نحتاج لتحسين هذه النقطة لاحقاً)
jsonError("رقم الهاتف غير مسجل لهذا الحساب. يرجى مراجعة الإدارة.");
exit;
}
printSuccess([
"message" => "Login successful",
"admin" => $admin,
"jwt" => $jwt,
"expires_in" => 3600
]);
$messageBody = "رمز التحقق الخاص بك للدخول إلى لوحة الإدارة هو: $otp";
$success = sendWhatsAppFromServer($phone, $messageBody);
if ($success) {
// حفظ الرمز في قاعدة البيانات للتحقق لاحقاً
$stmt = $con->prepare("INSERT INTO token_verification_admin (phone_number, token, expiration_time)
VALUES (?, ?, DATE_ADD(NOW(), INTERVAL 10 MINUTE))
ON DUPLICATE KEY UPDATE token = VALUES(token), expiration_time = VALUES(expiration_time)");
$stmt->execute([$phone, $otp]);
printSuccess([
"status" => "otp_required",
"message" => "تم إرسال رمز التحقق إلى WhatsApp الخاص بك.",
"phone" => $phone
]);
} else {
jsonError("فشل في إرسال رمز التحقق عبر WhatsApp.");
}
} else {
jsonError("كلمة المرور غير صحيحة.");
}