[英]Laravel: How can I write a policy class for API methods on a nested resource controller?
我正在處理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()
助手來授權操作。 或者,它可以在您的表單請求中使用Auth::user()->can()
。
class TaskController {
public function all(User $user)) {
$this->authorize('view', $user);
return $user->tasks;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.