在Laravel 4中返回当前用户

7

使用PHP和Laravel 4,我在我的User模型中有一个方法来检查管理员用户,代码如下:

public function isAdmin()
{
    if(isset($this->user_role)  && $this->user_role === 'admin'){
        return true;
    }else{
        return false;
    }
}

但是当我在其他类或模型中调用此函数时,它不起作用。

为了获得所需的结果,我必须像这样做...

public function isAdmin()
{
    if(isset(Auth::user()->user_role)  && Auth::user()->user_role === 'admin'){
        return true;
    }else{
        return false;
    }
}

我试图在我的管理员控制器中通过以下方法访问它,但是它返回一个空的用户对象,而不是当前登录的用户对象...
public function __construct(User $user)
{
    $this->user = $user;
}

我的问题是如何让第一个版本起作用?当我在另一个类中实例化一个用户对象时,我需要确保它具有当前登录用户的数据,但我不确定最佳方法是什么...我知道这很基础,我只是有点生疏,需要帮助,谢谢。

1个回答

14

这将返回用户存储库 - 而不是当前登录的用户

public function __construct(User $user)

要在应用程序的任何地方访问当前已登录用户-只需执行

Auth::user()

(像您的中间示例一样)

因此,要检查用户是否为管理员用户,请在应用程序的任何地方执行以下操作:

if (Auth::user()->isAdmin())
{
     // yes
}
else
{
     // no
}

1
Laravel非常酷,但似乎它做了太多的工作,很难知道正在发生什么。我想我只需要更多地学习框架,因为我习惯了从头开始做事情...有点有趣,使用框架对我来说更难了。 - JasonDavis
@HardyMathew - 是的 - 应该这样 - Laurence
@JasonDavis,你的愿望已经实现。你现在拥有了Lumen! - Jumper
@Jumper,一开始我不明白你的意思,但现在我明白了...http://lumen.laravel.com/ 这个太棒了,让我的一天都变得美好了!谢谢分享! - JasonDavis
如何在JS中访问当前用户? - StealthTrails
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接