<?php
namespace App\Security\Voter;
use App\Entity\Account\User;
use App\Entity\Channel\Channel;
use App\Entity\ChannelUserData\ChannelUserData;
use App\Service\Account\UserService;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
class CoordinatorVoter implements VoterInterface
{
public function __construct(
private UserService $userService,
) {}
public function vote(TokenInterface $token, $subject, array $attributes): int
{
if (!in_array('NIM_COORDINATOR', $attributes)) {
return VoterInterface::ACCESS_ABSTAIN;
}
/** @var User $user */
$user = $token->getUser();
if (!$subject instanceof Channel) {
return VoterInterface::ACCESS_ABSTAIN;
}
return $this->userService->isCoordinator($user, $subject);
}
}