我使用laravel设置了ACL。我有以下帮助:
function user($user_id = null)
{
if (!$user_id) return Auth::user();
return User::where('id', $user_id)->first();
}
我有这个辅助功能,所以我不必输入长Auth::user()
。
这就是问题所在。我设置了ACL,所以当我在模型中执行类似下面的操作并且用户未登录时,我收到错误。
if (user()->can('edit-blog')) {
echo 'you can edit blog!';
}
如果用户未登录,则会出现错误:
调用成员函数can()on null
现在,我的网站中到处都有以下代码。我几乎在每个视图,模型和控制器中都使用ACL。我不想做以下的事情只是为了不得错误。
if (user() && user()->can('edit-blog')) {
// do stuff
}
如果有" null"我怎么能返回false?错误或例外?
**我试过了**
我尝试了try/catch
,但它没有做任何事情:
try {
if (!$user_id) return Auth::user();
return User::where('id', $user_id)->first();
} catch (Exception $ex) {
return false;
}
感谢您的支持。
答案 0 :(得分:0)
您需要在调用之前检查用户是否已登录
if(Auth::check() && user()->can('edit-post')){
Return true;
}else{
Return false;
}