تحليل موحّد + خارطة طريق: تدّي صلاحيات كويس، وكل أبشن تحت السيطرة — مع البناء على الموجود لا إعادة اختراعه. يجمع تحليلَي الباك-أوفيس والمعمل.
| الطبقة | الحالة | التفصيل |
|---|---|---|
| كتالوج الصلاحيات | غني + على مستوى الحركة | ١٠٠٠ صلاحية module.resource.action. المبيعات ٥١ · المشتريات ٥١ — كل حركة (view/create/update/delete/approve/post/cancel/duplicate/confirm/ship...) ليها صلاحية. يعني «كل أبشن يتحكم فيه» متحقّق على مستوى الكتالوج. |
| فرض الباك (Spatie) | سليم ومتّسق | كل endpoint مقيّد بيرجّع 403 للي مالوش صلاحية؛ المعمل يحجب حتى حقول التكلفة/السعر في الـAPI. |
| أداة منح متقدّمة — المعمل | موجودة ومكتملة | محرّر «حسب الشاشة» + كتالوج ٤٦ شاشة + اعتماديات تلقائية + ٨ presets + Authority Limits (حدود رقمية) + إخفاء منيو per-role. ده النموذج المثالي للمنح — موجود بالفعل. |
شاشة أدوار الباك-أوفيس /core/roles | كويسة بس بسيطة | بتعرض الكتالوج الكامل مجمّع بالموديول + ترجمة + فلترة للموديولات المفعّلة. لكن مفيش «حسب الشاشة» ولا presets ولا حدود زي المعمل. |
sales.invoices) — يوزر «عرض» بيعدّي ويدخل.*appCan): شبه غايبة في الباك-أوفيس — المبيعات 0/16، المشتريات 1/14، HR 0/31، POS 0/17، المخزون/المحاسبة/Core = 0. فالأزرار كلها بتظهر.| البُعد | موجود | مطلوب | اللي لازم يتعمل |
|---|---|---|---|
| صلاحية لكل حركة (كتالوج) | مكتمل (مبيعات/مشتريات ٥١ لكل) | نفسه | لا شيء — الأساس موجود |
| فرض الباك | سليم | سدّ ٥ endpoints معمل مكشوفة (هيستوباث) | إضافة صلاحية + middleware |
| إخفاء الأزرار في الواجهة | ~0% في الباك-أوفيس | كل زرار حركة يتخفى بلا صلاحيته | إضافة *appCan على كل زر (الفجوة الكبرى — شكوتك) |
| UX المنح للباك-أوفيس | كتالوج مسطّح | سهل زي المعمل | (اختياري) مدّ نمط «حسب الشاشة»/presets للباك-أوفيس |
| تقييد الراوت لمستوى الحركة | خشن | اختياري | تشديد الراوت لو محتاج منع الصفحة نفسها |
| تنظيف/توحيد | ٣ محرّرات · seeder ميت · دور مُفرَط (بيانات) | واضح ونظيف | توحيد المحرّرات · حذف الميت · تظبيط الدور |
sales/*, purchases/*, hr/*, pos/*, inventory/*, accounting, core-admin — إضافة *appCanshared/directives/can.directive.ts — إصلاح مطابقة النقطة الأخيرةassets/i18n/{ar,en}.json — مفاتيح ROLES.RESOURCES.*/ACTIONS.* الناقصةfeatures/roles — تبويب «حسب الشاشة»/presets للباك-أوفيسLIS/routes/api.php + الـ٥ كونترولرات المكشوفة — صلاحيات + middlewareLisScreenCatalogCore/.../PermissionSeeder.php الميت.view يدخل الشاشة لكن .create/.update/.delete/.approve/.post/.cancel تختفي.*appCan بسلسلة غلط بيخفي الزر بصمت — لازم تطابق الكتالوج بالحرف (فحص آلي مقترح).RolePermissionSeeder عشان تتزرع وتظهر عند التحديث.*appCan على كل حركة (إضافة/تعديل/حذف/اعتماد/ترحيل/إلغاء) في المبيعات والمشتريات والمخزون والمحاسبة وHR وPOS وإدارة-Core، بسلاسل مطابقة للكتالوج (المتوفّر كامل). إصلاح النقطة الأخيرة. = شكوتك «كل أبشن تحت السيطرة».LabNewTypesController (كتابة نتائج هيستوباثولوجي بلا حارس). [أمني].ROLES.RESOURCES/ACTIONS فالصلاحيات تظهر بأسماء عربية واضحة (بدل النص الخام) — أساس «تدّي صلاحيات كويس».LisScreenCatalog المُثبَت) → منح أسهل بكتير للمالك. (قرار مالك — قسم ٨.)/core/roles → اختَر الدور → الصلاحيات مجمّعة بالموديول → فعّل بالظبط الحركات المطلوبة (مثلًا محاسب المبيعات = sales.invoices.view/post + sales.reports.view، من غير delete/cancel). (الباك هيمنع الممنوع بـ403 حتى قبل ما نخفي الأزرار.)بعد تنفيذ P0، الواجهة كمان هتخفي الأزرار الممنوعة — فالمنح هيبان أثره بصريًا مباشرة.
| القرار | الخيارات | التوصية |
|---|---|---|
| نموذج المنح للباك-أوفيس | (أ) /core/roles الحالي + إخفاء أزرار [الأساسي] · (ب) + مدّ «حسب الشاشة»/presets زي المعمل | ابدأ (أ) — بيحقّق «كل أبشن تحت السيطرة» بأقل خطر؛ (ب) لاحقًا لتجربة منح أسهل. |
| تشديد الراوت | (أ) خشن + إخفاء أزرار · (ب) + تشديد لمستوى الحركة | (أ) الآن؛ (ب) لو محتاج منع فتح الصفحة أصلًا. |
| توحيد المحرّرات (٣) | (أ) توحيد · (ب) إبقاء قشرة المعمل/العيادة | (أ) الأنظف — مدخل واحد. |
| الدور المُفرَط + الميت | تظبيط من المحرّر + حذف الميت | نعم — بيانات + تنظيف، بدون مخاطرة. |
التغيير الأساسي: نفس الشاشات، أزرار الحركة تختفي لمن مالوش صلاحيتها. مثال — فاتورة مبيعات ليوزر معاه sales.invoices.view فقط:
التطبيق: *appCan="'sales.invoices.create'" على «فاتورة»، و.update/.delete/.post/.cancel/.duplicate على الباقي — والصلاحيات دي كلها موجودة في الكتالوج. نفس النمط لكل شاشات الباك-أوفيس. شاشة /core/roles مش محتاجة إعادة تصميم — بس ترجمة أوضح (P1).
خطة شاملة موحّدة · فحص Opus لـ BE+FE + KB المعمل الكنسي · تبني على الموجود · لم تُعدَّل بيانات أو كود. بانتظار موافقة المالك قبل أي تنفيذ.