HDWebmobile Booking & Appointments
قم ببيع الخدمات والمواعيد القابلة للحجز عبر WooCommerce، مع سعة لكل فترة زمنية لا يمكن أبدًا بيعها بأكثر من طاقتها.
الوصف
HDWebmobile Booking & Appointments يحوّل أي منتج WooCommerce بسيط إلى خدمة قابلة للحجز. يختار العملاء تاريخًا وفترة زمنية متاحة على صفحة المنتج؛ يتم تأكيد الحجز في اللحظة التي يكتمل فيها طلبهم، ويمكنهم عرضه أو إلغاؤه لاحقًا ضمن "حسابي".
لماذا يوجد هذا الإضافة
كان لدى إضافة منافسة للحجز (Amelia) ثغرة مصادقة IDOR/تعيين جماعي (CVE-2026-2931، CVSS 8.8): نقطة نهاية "تحديث ملف الحجز الخاص بي" الخاصة بها كانت تقبل حقلًا مقدَّمًا من العميل يربط سجل الحجز بمعرّف مستخدم WordPress، دون أي تحقق من أنه ما زال يشير إلى حساب الطالب نفسه — مما سمح لعميل منخفض الصلاحيات بإعادة تعيين كلمة مرور أي مستخدم WordPress، بما في ذلك المسؤول. تسد هذه الإضافة فئة الثغرات هذه من خلال التصميم:
- يتم كتابة مالك الحجز في مكان واحد بالضبط — عند اكتمال الطلب، من معرّف العميل الخاص بالطلب نفسه — ولا يتم ذلك مرة أخرى أبدًا. لا يوجد أي مسار كود "تحديث حجز" في هذه الإضافة يقبل معرّف عميل أو معرّف مستخدم أو أي حقل مشابه من طلب.
- لا تلمس هذه الإضافة كلمة مرور WordPress أبدًا. لا يوجد أي مسار كود هنا يستدعي
wp_set_password() أو أي شيء مشابه، على الإطلاق — تظل كلمة مرور العميل بالكامل ضمن شاشة "تفاصيل الحساب" الخاصة بنواة WordPress.
- لا يمكن للعميل أبدًا رؤية أو إلغاء سوى حجوزاته الخاصة، مقيدة بحسابه المسجّل الدخول في استعلام قاعدة البيانات نفسه — وليس أبدًا بمعرّف مأخوذ من الطلب.
- يتم فرض السعة لكل فترة زمنية باستخدام حجز ذري آمن من حالات السباق (قيد تفرد في قاعدة البيانات)، بحيث لا يمكن أبدًا تأكيد عميلين في نفس الفترة الزمنية بما يتجاوز السعة المكوّنة. يؤدي إلغاء الحجز إلى تحرير فترته الزمنية لإعادة الاستخدام بشكل صحيح، بينما يتم الاحتفاظ بالسجل الملغى نفسه لسجل التدقيق.
الميزات
- تحويل أي منتج بسيط إلى خدمة قابلة للحجز من علامة التبويب "الحجز" ضمن "بيانات المنتج" الخاصة به
- أيام متاحة قابلة للتكوين، وفترات زمنية، ومهلة زمنية، وعدد الأيام المقدَّمة مسبقًا
- سعة لكل فترة زمنية — تتوقف الفترة الزمنية عن العرض بمجرد امتلائها
- يتم تأكيد الحجز تلقائيًا عند وضع علامة "مكتمل" على الطلب
- علامة تبويب "الحجوزات" ضمن "حسابي" لعرض الحجوزات القادمة وإلغائها
- إذا امتلأت فترة زمنية بين إضافة المنتج إلى السلة والدفع، يكتمل الطلب بشكل طبيعي ويتم إرسال بريد إلكتروني إلى المسؤول للمساعدة في إعادة الجدولة — لا يتم أبدًا حجز مزدوج لأي حجز
القيود (الإصدار 1)
- المنتجات البسيطة فقط — لا يوجد دعم للمنتجات المتغيرة
- لا يوجد تعيين للموظفين/الموارد — سعة الفترة الزمنية هي رقم مشترك واحد، وليست لكل موظف
- لا يوجد مزامنة للتقويم (Google Calendar، iCal، إلخ)
التثبيت
- ارفع الإضافة إلى
/wp-content/plugins/hdwebmobile-booking-appointments، أو ثبّتها من خلال شاشة إضافات WordPress.
- فعّل الإضافة. يجب أن يكون WooCommerce مثبتًا ومفعّلًا بالفعل.
- حرّر منتجًا بسيطًا، وافتح علامة التبويب الجديدة "الحجز" ضمن "بيانات المنتج"، وكوّن التوفر.
الترخيص
GPLv2 أو أحدث. انظر LICENSE.