我想检查用户是否具有从User
模型中获取特定属性的适当权限。
我已经做了简单的访问器示例,但这还不够,因为它不会从email
集合中删除/取消设置User
属性。
public function getEmailAttribute($value)
{
if(Auth::User()->hasPermissionTo('users.show.email')) {
return $value;
}
return false;
}
然后我使用User::Get()
并得到以下输出:
"name": "admin",
"email": "false",
...
访问器几乎可以正常工作,但是我想完全隐藏email
属性。
答案 0 :(得分:1)
您可以通过覆盖模型本身的toJson
或toArray
方法来实现此目的,具体取决于您使用哪种方法。因此,例如toJson
可能看起来像这样:
public function toJson( $options = 0 )
{
if( ! auth()->user()->hasPermissionTo('users.show.email')) {
$this->hidden[] = 'email';
}
return parent::toJson($options);
}
注意,我使用逆逻辑,因为无论如何您都希望返回结果。 toArray
也是如此。您应该在User
模型中使用它。