<?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 HomeModuleVoter extends Voter
{
const HOME_MODULE_DEFAULT = 'HOME_MODULE_DEFAULT';
const HOME_MODULE_WEB_QUOTE_REQUEST_TO_ASSIGN = 'HOME_MODULE_WEB_QUOTE_REQUEST_TO_ASSIGN';
const HOME_MODULE_WEB_QUOTE_REQUEST_TO_ASSIGN_DETAILED = 'HOME_MODULE_WEB_QUOTE_REQUEST_TO_ASSIGN_DETAILED';
const HOME_MODULE_CONTACT_REQUEST_TO_ASSIGN = 'HOME_MODULE_CONTACT_REQUEST_TO_ASSIGN';
const HOME_MODULE_CONTACT_REQUEST_TO_ASSIGN_DETAILED = 'HOME_MODULE_CONTACT_REQUEST_TO_ASSIGN_DETAILED';
const HOME_MODULE_APPOINTMENT_REQUEST_TO_ASSIGN = 'HOME_MODULE_APPOINTMENT_REQUEST_TO_ASSIGN';
const HOME_MODULE_APPOINTMENT_REQUEST_TO_ASSIGN_DETAILED = 'HOME_MODULE_APPOINTMENT_REQUEST_TO_ASSIGN_DETAILED';
const HOME_MODULE_MAIL_QUOTE_REQUEST_TO_ASSIGN = 'HOME_MODULE_MAIL_QUOTE_REQUEST_TO_ASSIGN';
const HOME_MODULE_MAIL_QUOTE_REQUEST_TO_ASSIGN_DETAILED = 'HOME_MODULE_MAIL_QUOTE_REQUEST_TO_ASSIGN_DETAILED';
const HOME_MODULE_ATTRIBUTED_WEB_QUOTE_REQUEST_IN_PROGRESS = 'HOME_MODULE_ATTRIBUTED_WEB_QUOTE_REQUEST_IN_PROGRESS';
const HOME_MODULE_ATTRIBUTED_CONTACT_REQUEST_IN_PROGRESS = 'HOME_MODULE_ATTRIBUTED_CONTACT_REQUEST_IN_PROGRESS';
const HOME_MODULE_ATTRIBUTED_APPOINTMENT_REQUEST_IN_PROGRESS = 'HOME_MODULE_ATTRIBUTED_APPOINTMENT_REQUEST_IN_PROGRESS';
const HOME_MODULE_ATTRIBUTED_MAIL_QUOTE_REQUEST_IN_PROGRESS = 'HOME_MODULE_ATTRIBUTED_MAIL_QUOTE_REQUEST_IN_PROGRESS';
const HOME_MODULE_QUOTE_REQUEST_IN_PROGRESS = 'HOME_MODULE_QUOTE_REQUEST_IN_PROGRESS';
const HOME_MODULE_QUOTE_REQUEST_IN_PROGRESS_ALL_SELLERS = 'HOME_MODULE_QUOTE_REQUEST_IN_PROGRESS_ALL_SELLERS';
const HOME_MODULE_MUTED_QUOTE_REQUEST_RELAUNCH = 'HOME_MODULE_MUTED_QUOTE_REQUEST_RELAUNCH';
const HOME_MODULE_MUTED_QUOTE_REQUEST_RELAUNCH_ALL_SELLERS = 'HOME_MODULE_MUTED_QUOTE_REQUEST_RELAUNCH_ALL_SELLERS';
const HOME_MODULE_CA_EN_COURS = 'HOME_MODULE_CA_EN_COURS';
const HOME_MODULE_NUMBER_OF_QUOTES_PROVIDED = 'HOME_MODULE_NUMBER_OF_QUOTES_PROVIDED';
const HOME_MODULE_NUMBER_OF_QUOTES_PROVIDED_ALL_SELLERS = 'HOME_MODULE_NUMBER_OF_QUOTES_PROVIDED_ALL_SELLERS';
const HOME_MODULE_QUOTE_CONVERSION_RATE_PROVIDED = 'HOME_MODULE_QUOTE_CONVERSION_RATE_PROVIDED';
const HOME_MODULE_QUOTE_CONVERSION_RATE_PROVIDED_ALL_SELLERS = 'HOME_MODULE_QUOTE_CONVERSION_RATE_PROVIDED_ALL_SELLERS';
const HOME_MODULE_NUMBER_OF_QUOTES_CURRENTLY_VALID = 'HOME_MODULE_NUMBER_OF_QUOTES_CURRENTLY_VALID';
const HOME_MODULE_NUMBER_OF_QUOTES_CURRENTLY_VALID_ALL_SELLERS = 'HOME_MODULE_NUMBER_OF_QUOTES_CURRENTLY_VALID_ALL_SELLERS';
const HOME_MODULE_NUMBER_OF_BOOKING_TO_CONFIRM = 'HOME_MODULE_NUMBER_OF_BOOKING_TO_CONFIRM';
const HOME_MODULE_CLIENT_FILES_BUTTON = 'HOME_MODULE_CLIENT_FILES_BUTTON';
const HOME_MODULE_SELLER_BONUS_BUTTON = 'HOME_MODULE_SELLER_BONUS_BUTTON';
const HOME_MODULE_REQUEST_LIST = 'HOME_MODULE_REQUEST_LIST';
const HOME_MODULE_APPOINTMENT_REQUEST_LIST = 'HOME_MODULE_APPOINTMENT_REQUEST_LIST';
const HOME_MODULE_NUMBER_OF_PARTNERS = 'HOME_MODULE_NUMBER_OF_PARTNERS';
const HOME_MODULE_NUMBER_OF_PARTNER_FOLLOW_UP = 'HOME_MODULE_NUMBER_OF_PARTNER_FOLLOW_UP';
const HOME_MODULE_NUMBER_OF_COMPANY_OFFERS = 'HOME_MODULE_NUMBER_OF_COMPANY_OFFERS';
const HOME_MODULE_PARTNER_TOTAL_TURNOVER = 'HOME_MODULE_PARTNER_TOTAL_TURNOVER';
const HOME_MODULE_PARTNER_DETAILED_TURNOVER = 'HOME_MODULE_PARTNER_DETAILED_TURNOVER';
const HOME_MODULE_NUMBER_OF_SEGMENTS = 'HOME_MODULE_NUMBER_OF_SEGMENTS';
const HOME_MODULE_NUMBER_OF_PRODUCT_DISCOUNT = 'HOME_MODULE_NUMBER_OF_PRODUCT_DISCOUNT';
const HOME_MODULE_COMPANY_OFFERS = 'HOME_MODULE_COMPANY_OFFERS';
const HOME_MODULE_MARKETING_WEB_QUOTE_REQUEST = 'HOME_MODULE_MARKETING_WEB_QUOTE_REQUEST';
const HOME_MODULE_MARKETING_WEB_QUOTE = 'HOME_MODULE_MARKETING_WEB_QUOTE';
const HOME_MODULE_MARKETING_BOOKING = 'HOME_MODULE_MARKETING_BOOKING';
const HOME_MODULE_WEBSERVICES = 'HOME_MODULE_WEBSERVICES';
const HOME_MODULE_MARKETING_ONGOING_CAMPAIGNS = 'HOME_MODULE_MARKETING_ONGOING_CAMPAIGNS';
const HOME_MODULE_NUMBER_OF_FULLWEB_BOOKINGS = 'HOME_MODULE_NUMBER_OF_FULLWEB_BOOKINGS';
protected function supports($attribute, $subject): bool
{
return in_array($attribute, [
self::HOME_MODULE_DEFAULT,
self::HOME_MODULE_WEB_QUOTE_REQUEST_TO_ASSIGN,
self::HOME_MODULE_WEB_QUOTE_REQUEST_TO_ASSIGN_DETAILED,
self::HOME_MODULE_CONTACT_REQUEST_TO_ASSIGN,
self::HOME_MODULE_CONTACT_REQUEST_TO_ASSIGN_DETAILED,
self::HOME_MODULE_APPOINTMENT_REQUEST_TO_ASSIGN,
self::HOME_MODULE_APPOINTMENT_REQUEST_TO_ASSIGN_DETAILED,
self::HOME_MODULE_MAIL_QUOTE_REQUEST_TO_ASSIGN,
self::HOME_MODULE_MAIL_QUOTE_REQUEST_TO_ASSIGN_DETAILED,
self::HOME_MODULE_ATTRIBUTED_WEB_QUOTE_REQUEST_IN_PROGRESS,
self::HOME_MODULE_ATTRIBUTED_CONTACT_REQUEST_IN_PROGRESS,
self::HOME_MODULE_ATTRIBUTED_APPOINTMENT_REQUEST_IN_PROGRESS,
self::HOME_MODULE_ATTRIBUTED_MAIL_QUOTE_REQUEST_IN_PROGRESS,
self::HOME_MODULE_QUOTE_REQUEST_IN_PROGRESS,
self::HOME_MODULE_QUOTE_REQUEST_IN_PROGRESS_ALL_SELLERS,
self::HOME_MODULE_MUTED_QUOTE_REQUEST_RELAUNCH,
self::HOME_MODULE_MUTED_QUOTE_REQUEST_RELAUNCH_ALL_SELLERS,
self::HOME_MODULE_CA_EN_COURS,
self::HOME_MODULE_NUMBER_OF_QUOTES_PROVIDED,
self::HOME_MODULE_NUMBER_OF_QUOTES_PROVIDED_ALL_SELLERS,
self::HOME_MODULE_QUOTE_CONVERSION_RATE_PROVIDED,
self::HOME_MODULE_QUOTE_CONVERSION_RATE_PROVIDED_ALL_SELLERS,
self::HOME_MODULE_NUMBER_OF_QUOTES_CURRENTLY_VALID,
self::HOME_MODULE_NUMBER_OF_QUOTES_CURRENTLY_VALID_ALL_SELLERS,
self::HOME_MODULE_NUMBER_OF_BOOKING_TO_CONFIRM,
self::HOME_MODULE_CLIENT_FILES_BUTTON,
self::HOME_MODULE_SELLER_BONUS_BUTTON,
self::HOME_MODULE_REQUEST_LIST,
self::HOME_MODULE_APPOINTMENT_REQUEST_LIST,
self::HOME_MODULE_NUMBER_OF_PARTNERS,
self::HOME_MODULE_NUMBER_OF_PARTNER_FOLLOW_UP,
self::HOME_MODULE_NUMBER_OF_COMPANY_OFFERS,
self::HOME_MODULE_PARTNER_TOTAL_TURNOVER,
self::HOME_MODULE_PARTNER_DETAILED_TURNOVER,
self::HOME_MODULE_NUMBER_OF_SEGMENTS,
self::HOME_MODULE_NUMBER_OF_PRODUCT_DISCOUNT,
self::HOME_MODULE_COMPANY_OFFERS,
self::HOME_MODULE_MARKETING_WEB_QUOTE_REQUEST,
self::HOME_MODULE_MARKETING_WEB_QUOTE,
self::HOME_MODULE_MARKETING_BOOKING,
self::HOME_MODULE_WEBSERVICES,
self::HOME_MODULE_MARKETING_ONGOING_CAMPAIGNS,
self::HOME_MODULE_NUMBER_OF_FULLWEB_BOOKINGS,
]);
}
protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool
{
$loggedUser = $token->getUser();
if (!$loggedUser instanceof UserInterface) {
return false;
}
return in_array($attribute, $loggedUser->getRoles());
}
}