使用条件仅在laravel控制器中为管理员用户获取数据

时间:2019-03-20 00:13:59

标签: laravel laravel-5 vue.js laravel-5.7

我只想在auth是管理员的情况下获取数据。

用户控制器:

public function index()
{
    if (auth::user()->type == 'admin') {

        return User::where('type','!=','admin')->latest()->paginate(100);
    }
}

我遇到了错误

  

试图获取非对象的属性“类型”。

3 个答案:

答案 0 :(得分:2)

此代码:

if (auth::user()->type == 'admin') {

应该是。

if (auth()->check() && auth()->user()->type == 'admin') {

说明:

  • auth()->check()-确保有一个用户登录。
  • &&-在第一次检查是否为假后停止
  • auth()->user()->type-从用户获取type属性

答案 1 :(得分:1)

如果使用基于角色的身份验证,则可以通过在用户模型中创建功能来检查用户角色

用户模型

public function isAdministrator()
{
   return $this->hasRole('admin');
} 

用户控制器

class userController
{
   public function index()
  {
      if(Auth::user()->isAdministrator())
      {
         # code...

      } 
}

答案 2 :(得分:0)

尝试一下:创建中间件并通过中间件传递路由,它将起作用

public function handle($request, Closure $next)
{
    if (auth()->user() && auth()->user()->type != 'admin')
    {
        return redirect('/unauthorized');
    }
    return $next($request);
}