Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ما هو الفرق بين haspermissiono و hasanypermissiono


ما هو الفرق بين haspermissiono و hasanypermissiono


يكمن الفرق بين "haspermissionto" و "Hasanypermission" في سياق حزمة الإذن من Spatie Laravel في كيفية فحص أذونات المستخدم:

- Haspermission إلى التحقق مما إذا كان لدى المستخدم إذن واحد محدد. إنها تُرجع "صحيح" إذا كان لدى المستخدم هذا الإذن الدقيق ، إما تم تعيينه مباشرة أو ورثه عبر الأدوار ، و "خطأ" خلاف ذلك. يمكنك تمرير اسم إذن أو معرف أو كائن إذن إلى هذه الطريقة. يكون من المفيد عندما تريد التحقق من إذن واحد معين للمستخدم.

- HasanyPermissionse لتحقق مما إذا كان لدى المستخدم * أي * من الأذونات المتعددة التي تم تمريرها كصفيف أو قائمة. إنه يعيد "صحيح" إذا كان لدى المستخدم أحد الأذونات المحددة على الأقل ، و "خطأ" إذا لم يتم تعيين أي منها. هذه الطريقة مريحة عندما تريد السماح بالوصول إذا كان لدى المستخدم إذن واحد على الأقل من مجموعة من الأذونات المحتملة.

ملاحظات مهمة إضافية:

- تحقق كلتا الطريقتين الأذونات المخصصة مباشرة للمستخدم وكذلك تلك الموروثة من الأدوار.

- لا تعتبر هذه الطرق بوابة Laravel `قبل" أو وظائف الالتفاف الفائقة. لذلك ، يجب عليك استخدام أساليب Laravel "Can" أو "Canany" أو "Canall" بدلاً من ذلك ، والتي تتكامل مع البوابات والسياسات ودعم منطق الإدارة الفائقة.

- `haspermissiono` هو لفحص إذن واحد ، في حين أن "hasanypermissiono" هو التحقق من أذونات متعددة حيث يكفي أي شخص.

باختصار ، استخدم `haspermission to` عند التحقق من إذن واحد ، واستخدم `hasanypermission to` عندما تريد التحقق مما إذا كان لدى المستخدم إذن واحد على الأقل من القائمة. لسيناريوهات التفويض الأكثر تعقيدًا أو أكثر تعقيدًا ، تفضل طرق Laravel المدمجة بدلاً من ذلك [1] [2] [5].

الاستشهادات:
[1] https://spatie.be/docs/laravel-permission/v6/basic-usage/direct-permissions
[2] https://stackoverflow.com/questions/58093970/spatie-laravel-permissions-gate-and-haspermissionto-are-working
[3] https://github.com/spatie/laravel-permission/issues/79
[4] https://discuss.flarum.org/d/4817-difference-between-user-can-and-user-haspermission
[5] https://spatie.be/docs/laravel-permission/v6/basic-usage/role-permissions
[6] https://dev.to/nicolasmontielf/add-permissions-and-roles-to-your-laravel-project-2hhl
[7]
[8]