Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon كيف يتعامل Spatie مع التسلسل الهرمي والميراث


كيف يتعامل Spatie مع التسلسل الهرمي والميراث


لا تدعم حزمة الإذن من SPATIE دور التسلسل الهرمي أو الميراث خارج الصندوق. هذا يعني أنه لا يحتوي على وظائف مدمجة لتحديد علاقات الوالدين والطفل بين الأدوار التي يرث فيها دور الوالدين تلقائيًا جميع أذونات أدواره الفرعية.

كيف تتعامل Spatie مع الأدوار والأذونات

- يتم تخزين الأدوار والأذونات ككيانات منفصلة في قاعدة البيانات.
- يتم تعيين الأذونات مباشرة للأدوار.
- يتم تعيين أدوار المستخدمين ، ومن خلال هذه الأدوار ، يكتسبون الأذونات المرتبطة.
- يمكنك أيضًا تعيين أذونات مباشرة للمستخدمين.
- عند التحقق من الأذونات ، تنظر الحزمة إلى جميع الأذونات المعينة مباشرة للمستخدم بالإضافة إلى تلك الموروثة عبر الأدوار.

التسلسل الهرمي والميراث

- الحزمة تعامل الأدوار ككيانات مسطحة دون أي تسلسل هرمي.
- لا توجد آلية مدمجة لتعيين دور لآخر أو أن يكون "دور الوالدين" يرث تلقائيًا جميع أذونات "أدوار الطفل" [1] [4].
- يمكن للمستخدمين تعيين أدوار متعددة ، مما يسمح بالمرونة في الجمع بين الأذونات من أدوار مختلفة بدلاً من الاعتماد على الميراث الهرمي [2].

النهج الشائعة لتنفيذ التسلسل الهرمي للدور مع المكافور

نظرًا لأن Spatie لا يدعم ميراث الدور ، غالبًا ما يقوم المطورون بتنفيذ الحلول مثل:

-تعيين جميع الأذونات بشكل صريح للأدوار ذات المستوى الأعلى: بدلاً من وراثة الأذونات من أدوار الأطفال ، يمكنك تعيين جميع الأذونات ذات الصلة يدويًا لكل دور ، بما في ذلك الأدوار ذات المستوى الأعلى مثل "الإدارة الفائقة" التي تحتوي على جميع أذونات الأدوار الأدنى [2] [5].

- تصنيف الأدوار مع قيم عدد صحيح: بعض المطورين يعينون ترتيبًا أو مستوى للأدوار (على سبيل المثال ، 1 للمستخدم ، 2 للمشرف ، 3 للمسؤول) ، ثم تنفيذ المنطق في تطبيقهم لمنح أذونات بناءً على رتبة دور المستخدم ، ومحاكاة التسلسل الهرمي بشكل فعال [2].

- أدوار متعددة لكل مستخدم: تعيين أدوار متعددة للمستخدمين الذين يحتاجون إلى أذونات مجتمعة من أدوار مختلفة ، وتجنب الحاجة إلى أدوار هرمية [2].

ملخص

- تركز حزمة Spatie على إدارة الأدوار والأذونات ككيانات منفصلة مسطحة.
-يشجع على تعيين أذونات مباشرة للأدوار والمستخدمين دون ميراث من الدور.
- يجب تنفيذ التسلسل الهرمي والميراث يدويًا إذا لزم الأمر ، وعادةً ما عن طريق تعيين أذونات بشكل صريح أو باستخدام منطق الترتيب المخصص.
- يتجنب هذا التصميم المشكلات المحتملة حيث تعتمد أذونات دور الوالد على أدوار الأطفال ، والتي قد تسبب تعقيدات الأمن أو الإدارة [1] [2] [4].

وهكذا ، بينما يوفر Spatie نظام أذونات قوي ومرن ، فإنه لا يتعامل مع التسلسل الهرمي للدور والميراث داخليًا ؛ يجب على المطورين تصميم استراتيجياتهم الخاصة لمحاكاة مثل هذا السلوك إذا لزم الأمر.

الاستشهادات:
[1] https://github.com/spatie/laravel-permission/issues/685
[2]
[3] https://spatie.be/docs/laravel-permission/v6/introduction
[4] https://stackoverflow.com/questions/67520321/how-to-implement-hierarchical-rbac-in-laravel
[5] https://www.interserver.net/tips/kb/how-to-implement-role-cancess-control-in-laravel/
[6]
[7] https://www.youtube.com/watch؟v=3HSBJCVWH78
[8] https://spatie.be/docs/laravel-permission/v6/basic-usage/role-permissions
[9] https://stackoverflow.com/questions/78213905/hierarchical-fors-for-a-user-with-child-naving-different-permissions-on
[10] https://stackoverflow.com/questions/75772209/spatie-role-plugin-for-laravel-sed-users-with-doesnt-assignrole
[11] https://dev.to/varzoeaa/spatie-permissions-vs-laravel-policies-and-gates-handling-role-calcess-1bdn