نظرة عامة على الأدوار
أدوار NQLA الأحد عشر، مقسّمة إلى فئات المنصة والشركة والمستخدم النهائي.
1 دقيقة للقراءة
نظرة عامة على الأدوار
تتحكّم NQLA في الوصول عبر التحكم المبني على الأدوار (RBAC) المبني على حزمة Spatie Permission. يُسنَد لكل حساب دور واحد؛ يمنح هذا الدور مجموعة ثابتة من الصلاحيات، ثم تُحدَّد البيانات التي يراها الحساب فوق تلك الصلاحيات عبر نطاق.
مجموعات الأدوار الثلاث
- المنصة / الموظفون — يشغّلون المنصة بأكملها عبر كل مستأجر:
super_adminوadminوstaffوcustomer_support. - الشركة — يشغّلون شركة توصيل أو تخزين واحدة:
storage_company_adminوstorage_company_staffوdelivery_company_adminوdelivery_company_staffوالدور الانتقاليpending_company. - المستخدم النهائي —
driver(يتولّى التوصيل عبر واجهة الجوال) وclient(التاجر / البائع).
الأدوار الأحد عشر
| الدور | المجموعة | نطاق البيانات | الغرض |
|---|---|---|---|
super_admin |
المنصة | الكل (دون قيود) | تحكّم كامل في المنصة — جميع الصلاحيات الـ ٢٩٧ |
admin |
المنصة | الكل (عبر المستأجرين) | الإدارة اليومية للمنصة والبيانات الأساسية |
staff |
المنصة | الكل (قراءة في الأغلب) | المراجعة التشغيلية الداخلية للمخزون والطلبات |
customer_support |
المنصة | الكل (للقراءة فقط) | الاطّلاع على المستخدمين/الطلبات/الاشتراكات لمساعدة العملاء |
storage_company_admin |
الشركة | شركة التخزين الخاصة | إدارة موظفي الشركة وتأكيد المخزون الوارد |
storage_company_staff |
الشركة | شركة التخزين الخاصة | تأكيد/رفض المخزون الوارد (دون إدارة المستخدمين) |
delivery_company_admin |
الشركة | شركة التوصيل الخاصة | إدارة السائقين/الموظفين وتوزيع الطلبات المُسندة |
delivery_company_staff |
الشركة | شركة التوصيل الخاصة | تحديث حالة التوصيل (دون إدارة المستخدمين) |
pending_company |
الشركة | الاشتراك قيد الموافقة فقط | شركة جديدة بانتظار موافقة المدير |
driver |
المستخدم النهائي | الطلبات المُسندة فقط | تسليم الطلبات المُسندة إليه |
client |
المستخدم النهائي | سجلّاته الخاصة فقط | التاجر / البائع — المنتجات والطلبات والمحفظة |
كيف تعمل الصلاحيات
- توجد ٢٩٧ صلاحية دقيقة (مثل
view ordersوcreate productsوapprove withdrawal-requests). تُخزَّن كصفوف صلاحيات في Spatie وتُعكَس في الكود كثوابت فيapp/Constants/Permissions.php. - الوصول مرفوض افتراضيًا: يُحجب أي مسار أو إجراء ما لم يملك الدور الصلاحية المطلوبة صراحةً. تُحمى المسارات بـ
middleware('permission:…')والإجراءات بـ@can/authorize(). - تُزرَع الأدوار في
database/seeders/SaasRoleSeeder.php. الدورsuper_adminخاص — يُزامَن مع كل صلاحية، فتتوفّر له الصلاحيات الجديدة تلقائيًا. - يُطبَّق الفصل بين المهام على الأموال: عرض قائمة المدفوعات (
manage withdrawal-requests) منحٌ مختلف عن صرف الأموال (approve withdrawal-requests).
كيف يعمل تحديد النطاق
امتلاك الصلاحية ضروري لكنه غير كافٍ — الصفوف التي تراها فعلًا تُضيَّق بالنطاق:
- نطاق المستأجر / المنصة — ترى أدوار المنصة السجلّات عبر جميع المستأجرين.
- نطاق الشركة — ترى أدوار الشركة فقط السجلّات التابعة لشركتها (الطلبات/المخزون المُسندة إليها، ومستخدموها).
- نطاق المالك — يرى
clientفقط الصفوف التي يكون مالكها (منتجاته وطلباته ومحفظته ونزاعاته). - نطاق الإسناد — يرى
driverفقط الطلبات التي يكون فيها السائق المُسنَد.
راجع صفحات كل دور للاطّلاع على الصلاحيات والشاشات والنقاط الطرفية الدقيقة لكل دور.