تالار گفتمان nCIS.ir

نسخه‌ی کامل: سطح دسترسی
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان عزیز
من میخوام قانون و وظیفه درست کنم
مثل همون 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 یک را برمیگرداند

این کدی که آقای عظیمی نوشته اند تو آموزش لاراول و خودشون هم نتیجه نگرفتند ولی بروی خودشونم نیاوردند
کسی هست بتونه راهنمایی کنه ممنون میشم
بررسی کدها که زمان بر هست ولی میتونید از پکیج زیر استفاده کنید داکیومنت خیلی خوبی هم داره
https://github.com/Zizaco/entrust