Php 在Laravel中检查访问者的权限

Php 在Laravel中检查访问者的权限,php,laravel,permissions,Php,Laravel,Permissions,我想检查用户是否具有从user模型获取特定属性的适当权限 我已经做了示例simple accessor,但这还不够,因为它不会从User集合中删除/取消设置email属性 公共函数getEmailAttribute($value) { if(Auth::User()->hasPermissionTo('users.show.email')){ 返回$value; } 返回false; } 然后我使用User::Get()并得到以下输出: "name": "admin", "email": "f

我想检查用户是否具有从
user
模型获取特定属性的适当权限

我已经做了示例simple accessor,但这还不够,因为它不会从
User
集合中删除/取消设置
email
属性

公共函数getEmailAttribute($value)
{
if(Auth::User()->hasPermissionTo('users.show.email')){
返回$value;
}
返回false;
}
然后我使用
User::Get()
并得到以下输出:

"name": "admin",
"email": "false",
...

访问者几乎可以正常工作,但我想隐藏
email
属性。

您可以通过覆盖模型本身的
toJson
toArray
方法来实现这一点,具体取决于您使用的方法。例如,
toJson
可以如下所示:

public function toJson( $options = 0 )
{
    if( ! auth()->user()->hasPermissionTo('users.show.email')) {
        $this->hidden[] = 'email';     
    }
    return parent::toJson($options);
}
请注意,我使用了反向逻辑,因为在任何情况下,您都希望返回一个结果。对于
toArray
,也将采用相同的方法。您的
用户
型号中应该有这个。

非常感谢