المسؤولون والأدوار والصلاحيات
من يستطيع تسجيل الدخول إلى لوحة التحكم، والدوران الأوليان، وكل صلاحية تفحصها واجهة API، وكيف تمنح عضو الفريق ما يحتاجه بالضبط.
لحزمة الحزمة الكاملة
كيف يعمل الوصول
- المسؤولون فقط يسجّلون الدخول، إلى لوحة التحكم. ليس للموقع حسابات: يجد الضيف حجزه بمرجعه وبريده.
- يملك المسؤول دورًا واحدًا أو أكثر، والدور مجموعة صلاحيات اسمها
<area>.<action>، مثلbookings.edit. ويملك المسؤول كل صلاحية من كل دور لديه. - تفحص واجهة API الصلاحية في كل مسار من مسارات لوحة التحكم، أيًا كان ما تعرضه الشاشة. وتخفي لوحة التحكم عناصر الشريط الجانبي والتبويبات والأزرار التي لا تشملها أدوار المسؤول، والصفحة المفتوحة بعنوانها تقول «لا تملك صلاحية الوصول إلى هذه الصفحة.»
- يصل تغيير أدوار المسؤول، أو صلاحيات دور، إلى ذلك المسؤول وهو مسجّل الدخول.
الدوران والحسابان الأوليان
| الدور | الصلاحيات | الحساب الأولي |
|---|---|---|
| المدير العام (Super Admin) | كل الـ 32 | admin@hollina.example |
| المدير (Manager) | overview.view وstays.* وcalendar.* وbookings.* وinquiries.* وreviews.* وdestinations.view وai_chat.*: الإقامات والتقويم والحجوزات والاستفسارات والتقييمات والمساعد، بلا المسؤولين والأدوار وإعدادات الشركة | manager@hollina.example |
تضبط التعبئة الأولية الدورين على هاتين القائمتين بالضبط في كل مرة تعمل فيها، ولا تعيد ضبط كلمة مرور موجودة. وتعرض إعدادات Manager الملف الشخصي والأمان فقط. غيّر بيانات تسجيل الدخول للحسابين، أو احذف الحسابين الأوليين، قبل أن تصبح لوحة التحكم متاحة من الإنترنت. ويسرد دليل التثبيت بيانات الدخول التجريبية.
كل الصلاحيات
| المجال | الصلاحيات |
|---|---|
| نظرة عامة | overview.view |
| الإقامات | stays.view, stays.create, stays.edit, stays.publish, stays.delete |
| التقويم | calendar.view, calendar.block |
| الحجوزات | bookings.view, bookings.edit |
| الاستفسارات | inquiries.view, inquiries.edit |
| التقييمات | reviews.view, reviews.moderate |
| الوجهات | destinations.view, destinations.create, destinations.edit, destinations.delete |
| المسؤولون | admins.view, admins.create, admins.edit, admins.delete, admins.assign_roles |
| الأدوار | roles.view, roles.create, roles.edit, roles.delete, roles.assign_permissions |
| إعدادات الشركة | settings.view, settings.edit |
| المساعد الذكي | ai_chat.use, ai_chat.view_models |
القائمة معرّفة مرة واحدة، في back-end/src/database/seeders/permission.seeder.ts؛ وتضيف التعبئة الأولية الأسماء الجديدة وتزيل ما لم تعد واجهة API تفحصه. وتُعدَّل أسئلة الصفحة الرئيسية بـ settings.view وsettings.edit.
إدارة المسؤولين
- يسرد
/en/dashboard/admins-managementالفريق، عشرة في الصفحة، مع بحث بالبريد والاسم والهاتف، ويضيف الحسابات ويعدّلها ويحذفها (admins.viewوadmins.createوadmins.editوadmins.delete). - يحتاج المسؤول الجديد إلى اسم أول وأخير وبريد وكلمة مرور من ست خانات على الأقل، تُكتب مرتين؛ والهاتف اختياري.
- تعيّن صفحة كل مسؤول أدواره (
admins.assign_roles). - كل مسؤول، مهما كان دوره، يعدّل صورته واسمه وبريده وهاتفه تحت الإعدادات ثم الملف الشخصي، ويغيّر بيانات دخوله تحت الإعدادات ثم الأمان، بإدخال الحالية. ولا يحتاج أي منهما إلى صلاحية.
أدوار المسؤولين
ينشئ /en/dashboard/admins-roles الأدوار ويعيد تسميتها ويحذفها (roles.create وroles.edit وroles.delete)، ويمنح صلاحياتها من شبكة مجمّعة حسب الجزء (roles.assign_permissions). ولإعطاء عضو في الفريق أقل من دور Manager، مثل عامل نظافة لا يحتاج إلا إلى التقويم، أنشئ دورًا فيه الصلاحيات التي يحتاجها فقط وعيّنه له بدلًا من ذلك.
ما يصل إليه المساعد
تفتح ai_chat.use المساعد الذكي ولا تمنح شيئًا آخر. ولا يقرأ المساعد ولا يغيّر إلا ما تسمح به صلاحيات المسؤول الأخرى، وهي نفسها التي تفحصها صفحات لوحة التحكم: بدون settings.edit لا يستطيع تغيير إعداد، وبدون bookings.edit لا يستطيع إلغاء حجز. ويفحص مرة أخرى قبل كل إجراء، فتسري صلاحية أُزيلت أثناء محادثة على التالية.