<?php
namespace App\Voter;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Authorization\Voter\Voter;
use Symfony\Component\Security\Core\User\UserInterface;
class DataAdminVoter extends Voter
{
const NOTIFICATION_GROUP_LIST = "DATA_ADMIN_NOTIFICATION_GROUP_LIST";
const NOTIFICATION_GROUP_CREATE = "DATA_ADMIN_NOTIFICATION_GROUP_CREATE";
const NOTIFICATION_GROUP_UPDATE = "DATA_ADMIN_NOTIFICATION_GROUP_UPDATE";
const NOTIFICATION_GROUP_REMOVE = "DATA_ADMIN_NOTIFICATION_GROUP_REMOVE";
const NOTIFICATION_RULE_LIST = "DATA_ADMIN_NOTIFICATION_RULE_LIST";
const NOTIFICATION_RULE_CREATE = "DATA_ADMIN_NOTIFICATION_RULE_CREATE";
const NOTIFICATION_RULE_UPDATE = "DATA_ADMIN_NOTIFICATION_RULE_UPDATE";
const NOTIFICATION_RULE_REMOVE = "DATA_ADMIN_NOTIFICATION_RULE_REMOVE";
const REMINDER_LIST = "DATA_ADMIN_REMINDER_LIST";
const REMINDER_CREATE = "DATA_ADMIN_REMINDER_CREATE";
const REMINDER_UPDATE = "DATA_ADMIN_REMINDER_UPDATE";
const CONFIRMATION_DELAY_LIST = "DATA_ADMIN_CONFIRMATION_DELAY_LIST";
const CONFIRMATION_DELAY_CREATE = "DATA_ADMIN_CONFIRMATION_DELAY_CREATE";
const CONFIRMATION_DELAY_UPDATE = "DATA_ADMIN_CONFIRMATION_DELAY_UPDATE";
const CONFIRMATION_DELAY_REMOVE = "DATA_ADMIN_CONFIRMATION_DELAY_REMOVE";
const CONFIRMATION_TYPE_LIST = "DATA_ADMIN_CONFIRMATION_TYPE_LIST";
const CONFIRMATION_TYPE_CREATE = "DATA_ADMIN_CONFIRMATION_TYPE_CREATE";
const CONFIRMATION_TYPE_UPDATE = "DATA_ADMIN_CONFIRMATION_TYPE_UPDATE";
const FULLWEB_MANAGER_LIST = "DATA_ADMIN_FULLWEB_MANAGER_LIST";
const FULLWEB_MANAGER_CREATE = "DATA_ADMIN_FULLWEB_MANAGER_CREATE";
const FULLWEB_MANAGER_UPDATE = "DATA_ADMIN_FULLWEB_MANAGER_UPDATE";
const SALE_SEGMENT_LIST = "DATA_ADMIN_SALE_SEGMENT_LIST";
const SALE_SEGMENT_CREATE = "DATA_ADMIN_SALE_SEGMENT_CREATE";
const SALE_SEGMENT_UPDATE = "DATA_ADMIN_SALE_SEGMENT_UPDATE";
const SALE_SEGMENT_REMOVE = "DATA_ADMIN_SALE_SEGMENT_REMOVE";
protected function supports($attribute, $subject): bool
{
return in_array($attribute, [
self::NOTIFICATION_GROUP_LIST,
self::NOTIFICATION_GROUP_CREATE,
self::NOTIFICATION_GROUP_UPDATE,
self::NOTIFICATION_GROUP_REMOVE,
self::NOTIFICATION_RULE_LIST,
self::NOTIFICATION_RULE_CREATE,
self::NOTIFICATION_RULE_UPDATE,
self::NOTIFICATION_RULE_REMOVE,
self::REMINDER_LIST,
self::REMINDER_CREATE,
self::REMINDER_UPDATE,
self::CONFIRMATION_DELAY_LIST,
self::CONFIRMATION_DELAY_CREATE,
self::CONFIRMATION_DELAY_UPDATE,
self::CONFIRMATION_DELAY_REMOVE,
self::CONFIRMATION_TYPE_LIST,
self::CONFIRMATION_TYPE_CREATE,
self::CONFIRMATION_TYPE_UPDATE,
self::FULLWEB_MANAGER_LIST,
self::FULLWEB_MANAGER_CREATE,
self::FULLWEB_MANAGER_UPDATE,
self::SALE_SEGMENT_LIST,
self::SALE_SEGMENT_CREATE,
self::SALE_SEGMENT_UPDATE,
self::SALE_SEGMENT_REMOVE,
]);
}
protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool
{
$loggedUser = $token->getUser();
if (!$loggedUser instanceof UserInterface) {
return false;
}
return in_array($attribute, $loggedUser->getRoles());
}
}