*/ final class GradeParentVoter extends Voter { public const string VIEW = 'GRADE_PARENT_VIEW'; #[Override] protected function supports(string $attribute, mixed $subject): bool { return $attribute === self::VIEW; } #[Override] protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token, ?Vote $vote = null): bool { $user = $token->getUser(); if (!$user instanceof SecurityUser) { return false; } return in_array(Role::PARENT->value, $user->getRoles(), true); } }