Laravel API资源:根据用户角色的不同回报

时间:2019-10-19 18:59:36

标签: laravel laravel-5

这是我第一次使用Laravel 5.8中的Api Resource将数据返回到应用程序。有一个User模型,其中包含有关用户的一些公共和私人信息。允许用户查看他/她的所有信息(与姓名,电话号码,电子邮件等相同),但允许其他人仅查看名称和用户名。如何在Api资源中处理此问题?

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用Conditional Attributes

public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'username' => $this->username,
        'email' => $this->when(auth()->id() == $this->id, 'email'),
        'phone_number' => $this->when(auth()->id() == $this->id, 'phone'),
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
    ];
}

这只会在经过身份验证的用户尝试查看自己的信息时返回电子邮件和电话号码

希望这会有所帮助