<?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 AdminMarketingVoter extends Voter
{
const CABIN_CATEGORY_B2B_LIST = "ADMIN_MARKETING_CABIN_CATEGORY_B2B_LIST";
const CABIN_CATEGORY_B2B_UPDATE = "ADMIN_MARKETING_CABIN_CATEGORY_B2B_UPDATE";
const COMPANY_OFFER_LIST = "ADMIN_MARKETING_COMPANY_OFFER_LIST";
const COMPANY_OFFER_CREATE = "ADMIN_MARKETING_COMPANY_OFFER_CREATE";
const COMPANY_OFFER_UPDATE = "ADMIN_MARKETING_COMPANY_OFFER_UPDATE";
const COMPANY_OFFER_REMOVE = "ADMIN_MARKETING_COMPANY_OFFER_REMOVE";
const COMPANY_DISCOUNT_LIST = "ADMIN_MARKETING_COMPANY_DISCOUNT_LIST";
const COMPANY_DISCOUNT_CREATE = "ADMIN_MARKETING_COMPANY_DISCOUNT_CREATE";
const COMPANY_DISCOUNT_UPDATE = "ADMIN_MARKETING_COMPANY_DISCOUNT_UPDATE";
const COMPANY_DISCOUNT_REMOVE = "ADMIN_MARKETING_COMPANY_DISCOUNT_REMOVE";
const CROISILAND_OFFER_LIST = "ADMIN_MARKETING_CROISILAND_OFFER_LIST";
const CROISILAND_OFFER_CREATE = "ADMIN_MARKETING_CROISILAND_OFFER_CREATE";
const CROISILAND_OFFER_UPDATE = "ADMIN_MARKETING_CROISILAND_OFFER_UPDATE";
const CROISILAND_OFFER_REMOVE = "ADMIN_MARKETING_CROISILAND_OFFER_REMOVE";
const CROISILAND_DISCOUNT_LIST = "ADMIN_MARKETING_CROISILAND_DISCOUNT_LIST";
const CROISILAND_DISCOUNT_CREATE = "ADMIN_MARKETING_CROISILAND_DISCOUNT_CREATE";
const CROISILAND_DISCOUNT_UPDATE = "ADMIN_MARKETING_CROISILAND_DISCOUNT_UPDATE";
const CROISILAND_DISCOUNT_REMOVE = "ADMIN_MARKETING_CROISILAND_DISCOUNT_REMOVE";
const MIGRATION_DISCOUNT_LIST = "ADMIN_MARKETING_MIGRATION_DISCOUNT_LIST";
const MIGRATION_DISCOUNT_UPDATE = "ADMIN_MARKETING_MIGRATION_DISCOUNT_UPDATE";
const MIGRATION_DISCOUNT_REMOVE = "ADMIN_MARKETING_MIGRATION_DISCOUNT_REMOVE";
const PRODUCT_LIST = "ADMIN_MARKETING_PRODUCT_LIST";
const PRODUCT_CREATE = "ADMIN_MARKETING_PRODUCT_CREATE";
const PRODUCT_UPDATE = "ADMIN_MARKETING_PRODUCT_UPDATE";
const PRODUCT_REMOVE = "ADMIN_MARKETING_PRODUCT_REMOVE";
const PRODUCT_VARIANTS_UPDATE = "ADMIN_MARKETING_PRODUCT_VARIANTS_UPDATE";
const AUTO_PRODUCT_VARIANT_LIST = "ADMIN_MARKETING_AUTO_PRODUCT_VARIANT_LIST";
const AUTO_PRODUCT_VARIANT_CREATE = "ADMIN_MARKETING_AUTO_PRODUCT_VARIANT_CREATE";
const AUTO_PRODUCT_VARIANT_UPDATE = "ADMIN_MARKETING_AUTO_PRODUCT_VARIANT_UPDATE";
const AUTO_PRODUCT_VARIANT_REMOVE = "ADMIN_MARKETING_AUTO_PRODUCT_VARIANT_REMOVE";
const PRODUCT_CATEGORY_LIST = "ADMIN_MARKETING_PRODUCT_CATEGORY_LIST";
const PRODUCT_CATEGORY_CREATE = "ADMIN_MARKETING_PRODUCT_CATEGORY_CREATE";
const PRODUCT_CATEGORY_UPDATE = "ADMIN_MARKETING_PRODUCT_CATEGORY_UPDATE";
const CABIN_SPECIFICITY_LIST = "ADMIN_MARKETING_CABIN_SPECIFICITY_LIST";
const CABIN_SPECIFICITY_CREATE = "ADMIN_MARKETING_CABIN_SPECIFICITY_CREATE";
const CABIN_SPECIFICITY_UPDATE = "ADMIN_MARKETING_CABIN_SPECIFICITY_UPDATE";
const CABIN_SPECIFICITY_REMOVE = "ADMIN_MARKETING_CABIN_SPECIFICITY_REMOVE";
const MISSING_DATA_LIST = "ADMIN_MARKETING_MISSING_DATA_LIST";
const MISSING_DATA_UPDATE = "ADMIN_MARKETING_MISSING_DATA_UPDATE";
const B2B_SERVICE_LIST = "ADMIN_MARKETING_B2B_SERVICE_LIST";
protected function supports($attribute, $subject): bool
{
return in_array($attribute, [
self::CABIN_CATEGORY_B2B_LIST,
self::CABIN_CATEGORY_B2B_UPDATE,
self::COMPANY_OFFER_LIST,
self::COMPANY_OFFER_CREATE,
self::COMPANY_OFFER_UPDATE,
self::COMPANY_OFFER_REMOVE,
self::COMPANY_DISCOUNT_LIST,
self::COMPANY_DISCOUNT_CREATE,
self::COMPANY_DISCOUNT_UPDATE,
self::COMPANY_DISCOUNT_REMOVE,
self::CROISILAND_OFFER_LIST,
self::CROISILAND_OFFER_CREATE,
self::CROISILAND_OFFER_UPDATE,
self::CROISILAND_OFFER_REMOVE,
self::CROISILAND_DISCOUNT_LIST,
self::CROISILAND_DISCOUNT_CREATE,
self::CROISILAND_DISCOUNT_UPDATE,
self::CROISILAND_DISCOUNT_REMOVE,
self::MIGRATION_DISCOUNT_LIST,
self::MIGRATION_DISCOUNT_UPDATE,
self::MIGRATION_DISCOUNT_REMOVE,
self::PRODUCT_LIST,
self::PRODUCT_CREATE,
self::PRODUCT_UPDATE,
self::PRODUCT_REMOVE,
self::PRODUCT_VARIANTS_UPDATE,
self::AUTO_PRODUCT_VARIANT_LIST,
self::AUTO_PRODUCT_VARIANT_CREATE,
self::AUTO_PRODUCT_VARIANT_UPDATE,
self::AUTO_PRODUCT_VARIANT_REMOVE,
self::PRODUCT_CATEGORY_LIST,
self::PRODUCT_CATEGORY_CREATE,
self::PRODUCT_CATEGORY_UPDATE,
self::CABIN_SPECIFICITY_LIST,
self::CABIN_SPECIFICITY_CREATE,
self::CABIN_SPECIFICITY_UPDATE,
self::CABIN_SPECIFICITY_REMOVE,
self::MISSING_DATA_LIST,
self::MISSING_DATA_UPDATE,
self::B2B_SERVICE_LIST,
]);
}
protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool
{
$loggedUser = $token->getUser();
if (!$loggedUser instanceof UserInterface) {
return false;
}
return in_array($attribute, $loggedUser->getRoles());
}
}