<?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 AdvVoter extends Voter
{
const TASK_LIST = "ADV_TASK_LIST";
const TASK_TO_ASSIGN_LIST = "ADV_TASK_TO_ASSIGN_LIST";
const TASK_TO_PROCESS_LIST = "ADV_TASK_TO_PROCESS_LIST";
const BOOKING_TO_UPDATE_LIST = "ADV_BOOKING_TO_UPDATE_LIST";
const BOOKING_CONFIRMATION_LIST = "ADV_BOOKING_CONFIRMATION_LIST";
const BOOKING_CONFIRMATION_UPDATE = "ADV_BOOKING_CONFIRMATION_UPDATE";
const REQUEST_LIST = "ADV_REQUEST_LIST";
const REQUEST_CREATE = "ADV_REQUEST_CREATE";
const REQUEST_UPDATE = "ADV_REQUEST_UPDATE";
const BOOKING_CHANGE_LIST = "ADV_BOOKING_CHANGE_LIST";
const BOOKING_CHANGE_CREATE = "ADV_BOOKING_CHANGE_CREATE";
const BOOKING_CHANGE_UPDATE = "ADV_BOOKING_CHANGE_UPDATE";
const BOOKING_CHANGE_STATE_LIST = "ADV_BOOKING_CHANGE_STATE_LIST";
const BOOKING_CHANGE_STATE_CREATE = "ADV_BOOKING_CHANGE_STATE_CREATE";
const BOOKING_CHANGE_STATE_UPDATE = "ADV_BOOKING_CHANGE_STATE_UPDATE";
const AMENDMENT_LIST = "ADV_AMENDMENT_LIST";
const PASSENGER_FORMALITY_LIST = "ADV_PASSENGER_FORMALITY_LIST";
const FIP_LIST = "ADV_FIP_LIST";
const FIP_UPDATE = "ADV_FIP_UPDATE";
const BOOKING_CONFIRMATION_ASSIGNMENT_LIST = "ADV_BOOKING_CONFIRMATION_ASSIGNMENT_LIST";
const SPECIAL_REQUEST_DOCUMENT_LIST = "ADV_SPECIAL_REQUEST_DOCUMENT_LIST";
const SPECIAL_REQUEST_DOCUMENT_CREATE = "ADV_SPECIAL_REQUEST_DOCUMENT_CREATE";
const SPECIAL_REQUEST_DOCUMENT_UPDATE = "ADV_SPECIAL_REQUEST_DOCUMENT_UPDATE";
const BOOKING_LIST = "ADV_BOOKING_LIST";
protected function supports($attribute, $subject): bool
{
return in_array($attribute, [
self::TASK_LIST,
self::TASK_TO_ASSIGN_LIST,
self::TASK_TO_PROCESS_LIST,
self::BOOKING_TO_UPDATE_LIST,
self::BOOKING_CONFIRMATION_LIST,
self::BOOKING_CONFIRMATION_UPDATE,
self::REQUEST_LIST,
self::REQUEST_CREATE,
self::REQUEST_UPDATE,
self::BOOKING_CHANGE_LIST,
self::BOOKING_CHANGE_CREATE,
self::BOOKING_CHANGE_UPDATE,
self::BOOKING_CHANGE_STATE_LIST,
self::BOOKING_CHANGE_STATE_CREATE,
self::BOOKING_CHANGE_STATE_UPDATE,
self::AMENDMENT_LIST,
self::PASSENGER_FORMALITY_LIST,
self::FIP_LIST,
self::FIP_UPDATE,
self::BOOKING_CONFIRMATION_ASSIGNMENT_LIST,
self::SPECIAL_REQUEST_DOCUMENT_LIST,
self::SPECIAL_REQUEST_DOCUMENT_CREATE,
self::SPECIAL_REQUEST_DOCUMENT_UPDATE,
self::BOOKING_LIST,
]);
}
protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool
{
$loggedUser = $token->getUser();
if (!$loggedUser instanceof UserInterface) {
return false;
}
return in_array($attribute, $loggedUser->getRoles());
}
}