اذهب إلى المحتوى
  • 0

هل يمكن جلب جميع الpermissions الخاصة بrole معينة؟

محمود موسى2

السؤال

السلام عليكم،

هل يمكن جلب جميع الpermissions الخاصة بrole معينة بإستخدام laratrust؟ 

لا أريد إستخدام DB فهل يمكن جلبها عبر method موجودة أساساً في laratrust آخر إصدار؟ 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

بالطبع بإمكانك ذلك لأنه يوجد علاقة بين النموذج Role و النموذج Permission فمثلاً إذا كان لديك:

$admin = Role::where('name', 'admin')->first();

يُمكنك الحصول على الصلاحيات المُتاحة لهذا الدور عن طريق العلاقة permissions:

$admin = Role::where('name', 'admin')->first();

$adminPermissions = $admin->permissions;

dd($adminPermissions);

و بما أنه توجد علاقة فيُمكنك عمل أي شيء تريده مثلاً إذا أردت جلب كل الأدوار و تحميل الصلاحيات بشكل حثيث يُمكنك ذلك من خلال:

$roles = Role::whereRoleNot(['super_admin', 'admin', 'user'])
            ->whenSearch(\request('search'))
            ->with(['permissions'])
            ->withCount('users')
            ->paginate(5);

و في صفحة العرض و أنت تقوم بعرض الأدوار يُمكنك عمل حلقة لصلاحيات الدور:

@foreach($roles as $role)

...

  @foreach($role->permissions as $permission)
  	...

  @endforeach

@endforeach

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1
بتاريخ 3 دقائق مضت قال محمود رضا موسى:

أنا أريد الpermissions الخاصة بrole مثلا تسمى admin ما هي الpermissions التي يسطتيع القيام بها الrole admin?

يمكنك معاملة Role كأي Laravel Class ثان , و ليكن في العلم أنه توجد علاقة one To Many بين الدور \App\Models\Role::class و الأذونات \App\Models\Permission::class . يمكنك الوصول إلى الأذونات الخاصة بدور محدد عن طريق : 

<?php 

Role::where('name', 'admin')->first()->permissions;

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

تحديث 

تحقيقا لنفس الغرض يمكنك جلب الأذونات الخاصة بمستخدم ما عن طريق إستعمال الدالة allPermissions على هذا النحو : 

<?php 

dd($user->allPermissions());

سيتم إعادة مجموعة Illuminate\Database\Eloquent\Collection بجميع الأذونات المتعلقة بمستخدم ما , و يمكنك تصفية المجموعات بحسب دور Role معين .

تم التعديل في بواسطة Adnane Kadri
تحديث في طرح الإجابة
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 4 دقائق مضت قال Adnane Kadri:

نعم يمكنك ذلك عن طريق إستعمال الدالة allPermissions على هذا النحو : 


<?php 

dd($user->allPermissions());

سيتم إعادة مجموعة Illuminate\Database\Eloquent\Collection بجميع الأذونات المتعلقة بمستخدم ما .

أعلم هذه الفانكشن ولكن هل هذه الفانكشك ستعيد لي الpermissions الخاصة بrole معينة أم ستعديل الpermission الخاصة بمستخدم معين!!!

أنا أريد الpermissions الخاصة بrole مثلا تسمى admin ما هي الpermissions التي يسطتيع القيام بها الrole admin?

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...