نظرة عامة على الأدوار

أدوار 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 فقط الطلبات التي يكون فيها السائق المُسنَد.

راجع صفحات كل دور للاطّلاع على الصلاحيات والشاشات والنقاط الطرفية الدقيقة لكل دور.