Laravel JSON:API -允许用户创建只与自己相关的对象

k0pti3hp  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(125)

我有一个JSON API设置,我想让用户只为自己创建地址。
在文档中,它显示在创建资源时,策略中没有要检查的请求。
关系验证也只适用于更新,而不是创建,所以我不太明白我怎么能说“只有授权用户创建一个地址,如果关系是他们自己的用户ID”以类似的方式更新方法。

策略示例:

class AddressPolicy
{
    use HandlesAuthorization;
    
    public function update(User $requestingUser, Address $address): bool
    {
        // User may update their own address if they do not have permission to edit all addresses
        return  $requestingUser->is($address->user) || $requestingUser->can('edit addresses');
    }

    public function create(User $requestingUser): bool
    {
        // Check if requestingUser is creating an address for themselves?
        return $requestingUser->can('create addresses');
    }
}

我能看到的唯一选项是为此创建一个custom controller action,但感觉应该可以通过策略验证或类似方法来完成。

ql3eal8s

ql3eal8s1#

将创建方法更新为以下内容:

public function create(User $requestingUser, $userId): bool
{
    // Check if requesting user is creating an address for themselves
    return $requestingUser->id === $userId || 
        $requestingUser->can('create addresses');
}

相关问题