<?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 ProspectRequestVoter extends Voter
{
const QUOTE_REQUEST_TO_ASSIGN_LIST = "PROSPECT_REQUEST_QUOTE_REQUEST_TO_ASSIGN_LIST";
const QUOTE_REQUEST_LIST = "PROSPECT_REQUEST_QUOTE_REQUEST_LIST";
const QUOTE_REQUEST_DETAIL = "PROSPECT_REQUEST_QUOTE_REQUEST_DETAIL";
const CREATE_QUOTE_REQUEST = "PROSPECT_REQUEST_CREATE_QUOTE_REQUEST";
const UPDATE_QUOTE_REQUEST = "PROSPECT_REQUEST_UPDATE_QUOTE_REQUEST";
const DONT_PROCESS_QUOTE_REQUEST = "PROSPECT_REQUEST_DONT_PROCESS_QUOTE_REQUEST";
const ASSIGN_QUOTE_REQUEST = "PROSPECT_REQUEST_ASSIGN_QUOTE_REQUEST";
const AUTO_ASSIGN_QUOTE_REQUEST = "PROSPECT_REQUEST_AUTO_ASSIGN_QUOTE_REQUEST";
const REMOVE_ASSIGN_QUOTE_REQUEST = "PROSPECT_REQUEST_REMOVE_ASSIGN_QUOTE_REQUEST";
const SHOW_QUOTE_REQUESTS_FROM_ALL_USERS = "PROSPECT_REQUEST_SHOW_QUOTE_REQUESTS_FROM_ALL_USERS";
const CONTACT_REQUEST_TO_ASSIGN_LIST = "PROSPECT_REQUEST_CONTACT_REQUEST_TO_ASSIGN_LIST";
const CONTACT_REQUEST_LIST = "PROSPECT_REQUEST_CONTACT_REQUEST_LIST";
const CONTACT_REQUEST_DETAIL = "PROSPECT_REQUEST_CONTACT_REQUEST_DETAIL";
const UPDATE_CONTACT_REQUEST = "PROSPECT_REQUEST_UPDATE_CONTACT_REQUEST";
const DONT_PROCESS_CONTACT_REQUEST = "PROSPECT_REQUEST_DONT_PROCESS_CONTACT_REQUEST";
const ASSIGN_CONTACT_REQUEST = "PROSPECT_REQUEST_ASSIGN_CONTACT_REQUEST";
const REMOVE_ASSIGN_CONTACT_REQUEST = "PROSPECT_REQUEST_REMOVE_ASSIGN_CONTACT_REQUEST";
const SWITCH_DONE_CONTACT_REQUEST = "PROSPECT_REQUEST_SWITCH_DONE_CONTACT_REQUEST";
const SHOW_CONTACT_REQUESTS_FROM_ALL_USERS = "PROSPECT_REQUEST_SHOW_CONTACT_REQUESTS_FROM_ALL_USERS";
const ADV_CONTACT_REQUEST_TO_ASSIGN_LIST = "PROSPECT_REQUEST_ADV_CONTACT_REQUEST_TO_ASSIGN_LIST";
const ADV_CONTACT_REQUEST_LIST = "PROSPECT_REQUEST_ADV_CONTACT_REQUEST_LIST";
const ADV_CONTACT_REQUEST_DETAIL = "PROSPECT_REQUEST_ADV_CONTACT_REQUEST_DETAIL";
const UPDATE_ADV_CONTACT_REQUEST = "PROSPECT_REQUEST_UPDATE_ADV_CONTACT_REQUEST";
const DONT_PROCESS_ADV_CONTACT_REQUEST = "PROSPECT_REQUEST_DONT_PROCESS_ADV_CONTACT_REQUEST";
const ASSIGN_ADV_CONTACT_REQUEST = "PROSPECT_REQUEST_ASSIGN_ADV_CONTACT_REQUEST";
const REMOVE_ASSIGN_ADV_CONTACT_REQUEST = "PROSPECT_REQUEST_REMOVE_ASSIGN_ADV_CONTACT_REQUEST";
const SHOW_ADV_CONTACT_REQUESTS_FROM_ALL_USERS = "PROSPECT_REQUEST_SHOW_ADV_CONTACT_REQUESTS_FROM_ALL_USERS";
const QUOTE_REMINDER_LIST = "PROSPECT_REQUEST_QUOTE_REMINDER_LIST";
const PLANNING = "PROSPECT_REQUEST_PLANNING";
const PLANNING_SHOW_ALL_SELLERS = "PROSPECT_REQUEST_PLANNING_SHOW_ALL_SELLERS";
protected function supports($attribute, $subject): bool
{
return in_array($attribute, [
self::QUOTE_REQUEST_TO_ASSIGN_LIST,
self::QUOTE_REQUEST_LIST,
self::QUOTE_REQUEST_DETAIL,
self::CREATE_QUOTE_REQUEST,
self::UPDATE_QUOTE_REQUEST,
self::DONT_PROCESS_QUOTE_REQUEST,
self::ASSIGN_QUOTE_REQUEST,
self::AUTO_ASSIGN_QUOTE_REQUEST,
self::REMOVE_ASSIGN_QUOTE_REQUEST,
self::SHOW_QUOTE_REQUESTS_FROM_ALL_USERS,
self::CONTACT_REQUEST_TO_ASSIGN_LIST,
self::CONTACT_REQUEST_LIST,
self::CONTACT_REQUEST_DETAIL,
self::UPDATE_CONTACT_REQUEST,
self::DONT_PROCESS_CONTACT_REQUEST,
self::ASSIGN_CONTACT_REQUEST,
self::REMOVE_ASSIGN_CONTACT_REQUEST,
self::SWITCH_DONE_CONTACT_REQUEST,
self::SHOW_CONTACT_REQUESTS_FROM_ALL_USERS,
self::ADV_CONTACT_REQUEST_TO_ASSIGN_LIST,
self::ADV_CONTACT_REQUEST_LIST,
self::ADV_CONTACT_REQUEST_DETAIL,
self::UPDATE_ADV_CONTACT_REQUEST,
self::DONT_PROCESS_ADV_CONTACT_REQUEST,
self::ASSIGN_ADV_CONTACT_REQUEST,
self::REMOVE_ASSIGN_ADV_CONTACT_REQUEST,
self::SHOW_ADV_CONTACT_REQUESTS_FROM_ALL_USERS,
self::QUOTE_REMINDER_LIST,
self::PLANNING,
self::PLANNING_SHOW_ALL_SELLERS
]);
}
protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool
{
$loggedUser = $token->getUser();
if (!$loggedUser instanceof UserInterface) {
return false;
}
return in_array($attribute, $loggedUser->getRoles());
}
}