This commit is contained in:
Hamza-Ayed
2026-04-30 15:59:58 +03:00
parent b301aff8cb
commit aea14f420e
6 changed files with 263 additions and 76 deletions

View File

@@ -1,26 +1,54 @@
<?php
//login.php
require_once __DIR__ . '/../../connect.php';
/**
* Admin/auth/login.php
* تسجيل دخول المشرفين باستخدام البصمة وكلمة المرور المشفرة
*/
require_once __DIR__ . '/../../core/bootstrap.php';
$device = filterRequest("device_number");
$phone = filterRequest("phone_number");
$fingerprint = filterRequest('fingerprint');
$password = filterRequest('password');
$audience = filterRequest('aud') ?? 'admin';
if (empty($device) || empty($phone)) {
jsonError("device_number أو phone_number مفقود");
if (empty($fingerprint) || empty($password)) {
jsonError("Fingerprint and password are required.");
exit;
}
$stmt = $con->prepare("SELECT * FROM adminUser WHERE device_number = ? AND name = ?");
$stmt->execute([$device, $phone]);
if ($stmt->rowCount() > 0) {
try {
$con = Database::get('main');
// البحث عن المشرف باستخدام بصمة الجهاز (Fingerprint)
$stmt = $con->prepare("SELECT * FROM adminUser WHERE fingerprint = :fp LIMIT 1");
$stmt->execute([':fp' => $fingerprint]);
$admin = $stmt->fetch(PDO::FETCH_ASSOC);
// يمكن لاحقًا توليد توكن أو بيانات أخرى
printSuccess([
"message" => "تم التحقق بنجاح",
"admin" => $admin,
]);
} else {
jsonError("بيانات الدخول غير صحيحة أو غير مسجلة.");
if ($admin) {
// التحقق من كلمة المرور الهاش
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';
// توليد توكن الدخول
$jwt = $jwtService->generateAccessToken($admin['id'], $role, $audience);
printSuccess([
"message" => "Login successful",
"admin" => $admin,
"jwt" => $jwt,
"expires_in" => 3600
]);
} else {
jsonError("كلمة المرور غير صحيحة.");
}
} else {
jsonError("الجهاز غير مسجل كمشرف.");
}
} catch (Exception $e) {
error_log("[Admin Login Error] " . $e->getMessage());
jsonError("خطأ في السيرفر: " . $e->getMessage());
}