<?php
// src/Voter/CustomPermissionVoter.php
namespace App\Voter;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Authorization\Voter\Voter;
use App\Entity\KycVerificationStatus;
class KycInfoSubmittedVoter extends Voter
{
const PERMISSION_NAME = 'KYC_INFO_SUBMITTED';
protected function supports($attribute, $subject)
{
return $attribute === self::PERMISSION_NAME;
}
protected function voteOnAttribute($attribute, $subject, TokenInterface $token)
{
$user = $token->getUser();
return in_array('ROLE_ADMIN', $token->getRoleNames()) || (in_array('ROLE_CLIENT', $token->getRoleNames()) && $user && ( $user->getKycVerificationStatus()?->getId() == KycVerificationStatus::VERIFIED || $user->getKycVerificationStatus()?->getId() == KycVerificationStatus::WAITING_FOR_VALIDATION));
}
}