رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سطح دسترسی
#1
سلام دوستان عزیز
من میخوام قانون و وظیفه درست کنم
مثل همون rbac یی است
جدول Roles , permissions , users را ساختم
و جداول رابط permission_role , role_user را هم ساختم و مقدار دهی کردم
حالا اومدم داخل یکی از کنترلر هام 
 auth()->loginUsingId(1);

و با این دستور کاربر شماره یک را لاگین کردم
و بعد داخل AuthServiceProvider
public function boot()
{
   $this->registerPolicies();

   foreach ($this->getPermission() as $permission)
   {
       Gate::define($permission->name , function($user) use ($permission){
           return $user->hasRole($permission->roles);
       });
   }

}
protected function getPermission()
{
   return Permission::with('roles')->get();
}
و بعد در مدل User هم
public function hasRole($role)
{
   if(is_string($role))
   {
       return $this->roles->contains('name' , $role);
   }
   foreach ($role as $r)
   {
       if($this->hasRole($r->name))
       {
           return true;
       }
   }
}

و سر انجام
@can('edit-forum')
<a href="/notes/{{ $note->id }}/edit">
   @endcan
   {{ $note->name }}
   @can('edit-forum')
</a>
@endcan

طوری کار کردم که کاربر یک میتونه کارت یک رو ببینه و کاربر 2 کارت 2 و ...
ولی الان تا لاگین میشه کاربر یک میتونه همه رو ببینه

در این کد
public function boot()
{
   $this->registerPolicies();

   foreach ($this->getPermission() as $permission)
   {
       Gate::define($permission->name , function($user) use ($permission){
           return $user->hasRole($permission->roles);
       });
   }

}
وقتی که من بجای return از echo استفاده کردم 1 چاپ شد
یعنی بجای name یک را برمیگرداند

این کدی که آقای عظیمی نوشته اند تو آموزش لاراول و خودشون هم نتیجه نگرفتند ولی بروی خودشونم نیاوردند
کسی هست بتونه راهنمایی کنه ممنون میشم
انگار که نیستی ، چو هستی خوش باش
حکیم عمر خیام
پاسخ
تشکر شده توسط:
#2
بررسی کدها که زمان بر هست ولی میتونید از پکیج زیر استفاده کنید داکیومنت خیلی خوبی هم داره
https://github.com/Zizaco/entrust
موفقیت، نتیجه تشخیص درست است؛ تشخیص درست، نتیجه تجربه است؛ تجربه نیز اغلب نتیجه تشخیص نادرست است.



پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان