我正在User
和Task
模型之间建立多对多关系。一个用户属于许多任务,而一个任务属于许多用户。我有一个名为task_user
的数据透视表。
在我的API中,我定义的路由如下:
Route::get('/users/{user}/tasks', 'TaskUserController@all');
我想写一个策略来强制当前登录的用户auth()->user
是路由中被请求的用户。基本上,用户只能查看自己的任务。
如何为嵌套资源控制器TaskUserController
编写策略类?
资源的嵌套与制定策略无关。
制定您的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;
}
}