Laravel:如何在嵌套资源控制器上为API方法编写策略类?

问题描述 投票:0回答:1

我正在UserTask模型之间建立多对多关系。一个用户属于许多任务,而一个任务属于许多用户。我有一个名为task_user的数据透视表。

在我的API中,我定义的路由如下:

Route::get('/users/{user}/tasks', 'TaskUserController@all');

我想写一个策略来强制当前登录的用户auth()->user是路由中被请求的用户。基本上,用户只能查看自己的任务。

如何为嵌套资源控制器TaskUserController编写策略类?

laravel rest model nested-resources
1个回答
0
投票

资源的嵌套与制定策略无关。

制定您的UserPolicy。

class UserPolicy()
{
    public function view(User $authorizedUser, User $user) {
        return $authorizedUser->is($user);
    }
}

在您的控制器中,您可以使用authorize()帮助器来授权操作。或者,在您的表单请求中或通过中间件。

class TaskController {
    public function all(User $user)) {
        $this->authorize('view', $user);

        return $user->tasks;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.