<?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\Model\AppConstant;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
class AprilFoolsVoter extends Voter
{
const PERMISSION_NAME = 'APRIL_FOOLS';
public function __construct(private ParameterBagInterface $parameterBag)
{
}
protected function supports($attribute, $subject)
{
return $attribute === self::PERMISSION_NAME;
}
protected function voteOnAttribute($attribute, $subject, TokenInterface $token)
{
// $user = $token->getUser();
if(!$this->parameterBag->get('april_fools_active'))
return false;
$now = strtotime("now");
return in_array('ROLE_USER', $token->getRoleNames()) &&
!in_array('ROLE_ADMIN', $token->getRoleNames()) &&
$now >= strtotime($this->parameterBag->get('april_fools_start')) &&
$now < strtotime($this->parameterBag->get('april_fools_end_exclusive'));
}
}