В промежуточном программном обеспечении CheckRole.php
вы вызываете метод $request->user()->hasRole($roles)
, то есть у вас нет функции hasRole()
в вашей пользовательской модели и не передано никаких аргументов. Вы можете попробовать мой подход здесь, если у вас есть только 1 роль
Пользователь. php
public function hasRole()
{
return $this->hasOne('App\Role','id','role_id');
}
И в вашем специальном промежуточном программном обеспечении
public function handle($request, Closure $next)
{
if(Auth::user()->hasRole->role_name == "whatever role you want")
{
return $next($request);
}
//redirect to everywhere you want
}
Если у вашего пользователя несколько ролей, попробуйте этот Пользователь. php
public function roles()
{
return $this->hasMany('App\Role','id','role_id');
}
public function hasRole(string $role)
{
$roles = $this->roles();
foreach($roles as $permission)
{
if($permission->role_name == $role)
{
return true;
}
}
return false;
}
В вашем промежуточном ПО просто сделайте это
public function handle($request, Closure $next)
{
if(Auth::user()->hasRole("whatever role"))
{
return $next($request);
}
//redirect to everywhere you want
}