Аргумент 1, передаваемый в App\Models\User::hasAnyRoles(), должен быть массива типов, заданная строка

Я хочу ограничить доступ администраторов к определенным страницам, и я получаю эту ошибку после запуска моего кода: аргумент 1, переданный в App \ Models \ User::hasAnyRoles(), должен иметь массив типов, заданную строку, вызываемую в F: \ Main Server \ htdocs \ voskillproject \ app \ Providers \ AuthServiceProvider.php в строке 33 (вид: F: \ Main Server \ htdocs \ voskillproject \ resources \ views \ backend \ adminsidebar.blade.php)

вот моя модель пользователя

      public function roles(){
    return $this->belongsToMany('App\Models\Role');

}

/**
 * check if the user has a role
 * @param string $role
 * @return bool
 */
public function hasAnyRole(string $role)
{
    return null !== $this->roles()->where('Role_name',$role)->first();
}

/**
 * check if the user has any given role
 * @param array $role
 * @return bool
 */
public function hasAnyRoles(array $role)
{
    return null !== $this->roles()->whereIn('Role_name',$role)->first();
}

вот мой authserviceprovider, где я зарегистрировал свой выход

        Gate::define('is-admin',function($user)
  {
    return $user->hasAnyRoles('Super Admin','Company Manager');
  }); 

вот раздел панели навигации

        @can('is-admin')
    <li class="nav-item {{ 'admin/roles'==request()->path()?'active':' ' }}">
      <a class="nav-link" href="{{ route('roles.index') }}">
        <i class="mdi mdi-view-headline menu-icon"></i>
        <span class="menu-title">Roles</span>
      </a>
    </li>
  @endcan

я не понял, где я ошибся в своем коде

1 ответ

Я нашел решение в authserviceprovider вместо hasAnyRoles, оно должно быть hasAnyRole

Другие вопросы по тегам