query("SELECT COUNT(*) FROM adminUser")->fetchColumn(); if ($adminCount > 0) { // تفعيل المصادقة هنا لاحقاً لضمان الأمان // $auth = JwtService::authenticate($redis); // if ($auth['role'] !== 'super_admin' && $auth['role'] !== 'admin') { // jsonError("Unauthorized. Only Admins can add staff."); // exit; // } } $name = filterRequest("name"); $phone = filterRequest("phone"); $email = filterRequest("email"); $password = filterRequest("password"); $role = filterRequest("role"); // 'admin' or 'service' $fingerprint = filterRequest("fingerprint"); $gender = filterRequest("gender") ?? 'Male'; $birthdate = filterRequest("birthdate"); if (empty($name) || empty($password) || empty($role) || empty($fingerprint)) { jsonError("Missing required fields (name, password, role, fingerprint)."); exit; } try { $hashedPassword = password_hash($password, PASSWORD_DEFAULT); // تشفير البيانات الحساسة باستخدام الهيلبر العام من bootstrap $encName = $encryptionHelper->encryptData($name); $encPhone = $encryptionHelper->encryptData($phone); $encEmail = $encryptionHelper->encryptData($email); if ($role === 'admin') { // الإضافة لجدول المديرين $sql = "INSERT INTO adminUser (id, fingerprint, name, password, role, created_at) VALUES (UUID(), :fp, :name, :pass, :role, NOW())"; $stmt = $con->prepare($sql); $stmt->execute([ ':fp' => $fingerprint, ':name' => $encName, ':pass' => $hashedPassword, ':role' => $role ]); } else { // الإضافة لجدول المستخدمين (خدمة العملاء) $sql = "INSERT INTO users (id, fingerprint, phone, email, gender, password, birthdate, user_type, first_name, created_at) VALUES (UUID(), :fp, :phone, :email, :gender, :pass, :bdate, 'service', :fname, NOW())"; $stmt = $con->prepare($sql); $stmt->execute([ ':fp' => $fingerprint, ':phone' => $encPhone, ':email' => $encEmail, ':gender' => $gender, ':pass' => $hashedPassword, ':bdate' => $birthdate, ':fname' => $encName ]); } if ($stmt->rowCount() > 0) { jsonSuccess("Staff member added successfully."); } else { jsonError("Failed to add staff member."); } } catch (Exception $e) { error_log("[Staff Add Error] " . $e->getMessage()); jsonError("Server error: " . $e->getMessage()); }