Я не уверен, но это поможет открыть ваш user model
public function roles()
{
return $this->belongsToMany(Role::class);
}
public function permissions()
{
return $this->belongsToMany(Permission::class);
}
public function hasRole(...$roles)
{
foreach($roles as $role)
{
if($this->roles->contains('name',$role))
{
return true;
}
}
return false;
}
public function hasPermission($permission)
{
return $this->hasPermissionThroughRole($permission) || (bool) $this->permissions->where('name',$permission->name)->count();
}
public function hasPermissionThroughRole($permission)
{
foreach($permission->roles as $role)
{
if($this->roles->contains($role))
{
return true;
}
}
return false;
}
Затем откройте Role Model
и добавьте эти
public function permissions()
{
return $this->belongsToMany(Permission::class);
}
public function users()
{
return $this->belongsToMany(User::class);
}
и откройте permission model
public function roles()
{
return $this->belongsToMany(Role::class);
}
public function users()
{
return $this->belongsToMany(User::class);
}
и, наконец, для загрузки всех прав доступа к ролям и пользователю выполните команду php artisan make:provider PermissionServiceProvider
открыть созданного вами поставщика услуг и
добавить
use App\Permission;
use Illuminate\Support\Facades\Gate;
добавьте код по методу boot
Permission::get()->map(function ($permission)
{
Gate::define($permission->name, function ($user) use ($permission)
{
return $user->hasPermission($permission);
});
});
надеюсь, это поможет, если вы обнаружите какие-либо трудности, пожалуйста, прокомментируйте ниже