Аргумент 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