// TaskController.php
#[Route('/{task}', name: 'task_details', methods: ['GET'])]
/* ↓↓↓↓ */
#[IsGranted(TaskVoter::ACCESS_TASK, 'task', 'No task found', 404)]
public function taskDetails(Task $task): Response
{
// ...
}
// TaskVoter.php
protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool
{
if (TaskVoter::ACCESS_TASK === $attribute && $subject instanceof Task) {
return $this->canAccessTask($subject, $token->getUser());
}
}