<?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 AdminSaleBookingVoter extends Voter
{
const SPECIAL_REQUEST_LIST = "ADMIN_SALE_BOOKING_SPECIAL_REQUEST_LIST";
const SPECIAL_REQUEST_TYPE_LIST = "ADMIN_SALE_BOOKING_SPECIAL_REQUEST_TYPE_LIST";
const SPECIAL_REQUEST_TYPE_CREATE = "ADMIN_SALE_BOOKING_SPECIAL_REQUEST_TYPE_CREATE";
const SPECIAL_REQUEST_TYPE_UPDATE = "ADMIN_SALE_BOOKING_SPECIAL_REQUEST_TYPE_UPDATE";
const CABIN_OPTION_DURATION_LIST = "ADMIN_SALE_BOOKING_CABIN_OPTION_DURATION_LIST";
const CABIN_OPTION_DURATION_CREATE = "ADMIN_SALE_BOOKING_CABIN_OPTION_DURATION_CREATE";
const CABIN_OPTION_DURATION_UPDATE = "ADMIN_SALE_BOOKING_CABIN_OPTION_DURATION_UPDATE";
const CABIN_OPTION_DURATION_REMOVE = "ADMIN_SALE_BOOKING_CABIN_OPTION_DURATION_REMOVE";
const FORMALITY_SANITARY_PROTOCOL_LIST = "ADMIN_SALE_BOOKING_FORMALITY_SANITARY_PROTOCOL_LIST";
const FORMALITY_SANITARY_PROTOCOL_CREATE = "ADMIN_SALE_BOOKING_FORMALITY_SANITARY_PROTOCOL_CREATE";
const FORMALITY_SANITARY_PROTOCOL_UPDATE = "ADMIN_SALE_BOOKING_FORMALITY_SANITARY_PROTOCOL_UPDATE";
const LEGAL_TEXT_LIST = "ADMIN_SALE_BOOKING_LEGAL_TEXT_LIST";
const LEGAL_TEXT_CREATE = "ADMIN_SALE_BOOKING_LEGAL_TEXT_CREATE";
const LEGAL_TEXT_UPDATE = "ADMIN_SALE_BOOKING_LEGAL_TEXT_UPDATE";
const LEGAL_TEXT_DETAIL = "ADMIN_SALE_BOOKING_LEGAL_TEXT_DETAIL";
const BOOKING_CONFIRMATION_LIST = "ADMIN_SALE_BOOKING_BOOKING_CONFIRMATION_LIST";
const BOOKING_CONFIRMATION_UPDATE = "ADMIN_SALE_BOOKING_BOOKING_CONFIRMATION_UPDATE";
const SELLER_SCHEDULE_LIST = "ADMIN_SALE_BOOKING_SELLER_SCHEDULE_LIST";
const CONFIRMATION_RESPONSIBLE_LIST = "ADMIN_SALE_BOOKING_CONFIRMATION_RESPONSIBLE_LIST";
const CONFIRMATION_RESPONSIBLE_CREATE = "ADMIN_SALE_BOOKING_CONFIRMATION_RESPONSIBLE_CREATE";
const CONFIRMATION_RESPONSIBLE_UPDATE = "ADMIN_SALE_BOOKING_CONFIRMATION_RESPONSIBLE_UPDATE";
const TODO_LIST = "ADMIN_SALE_BOOKING_TODO_LIST";
const TODO_CREATE = "ADMIN_SALE_BOOKING_TODO_CREATE";
const TODO_UPDATE = "ADMIN_SALE_BOOKING_TODO_UPDATE";
const TODO_TYPE_LIST = "ADMIN_SALE_BOOKING_TODO_TYPE_LIST";
const TODO_TYPE_CREATE = "ADMIN_SALE_BOOKING_TODO_TYPE_CREATE";
const TODO_TYPE_UPDATE = "ADMIN_SALE_BOOKING_TODO_TYPE_UPDATE";
protected function supports($attribute, $subject): bool
{
return in_array($attribute, [
self::SPECIAL_REQUEST_LIST,
self::SPECIAL_REQUEST_TYPE_LIST,
self::SPECIAL_REQUEST_TYPE_CREATE,
self::SPECIAL_REQUEST_TYPE_UPDATE,
self::CABIN_OPTION_DURATION_LIST,
self::CABIN_OPTION_DURATION_CREATE,
self::CABIN_OPTION_DURATION_UPDATE,
self::CABIN_OPTION_DURATION_REMOVE,
self::FORMALITY_SANITARY_PROTOCOL_LIST,
self::FORMALITY_SANITARY_PROTOCOL_CREATE,
self::FORMALITY_SANITARY_PROTOCOL_UPDATE,
self::LEGAL_TEXT_LIST,
self::LEGAL_TEXT_CREATE,
self::LEGAL_TEXT_UPDATE,
self::LEGAL_TEXT_DETAIL,
self::BOOKING_CONFIRMATION_LIST,
self::BOOKING_CONFIRMATION_UPDATE,
self::SELLER_SCHEDULE_LIST,
self::CONFIRMATION_RESPONSIBLE_LIST,
self::CONFIRMATION_RESPONSIBLE_CREATE,
self::CONFIRMATION_RESPONSIBLE_UPDATE,
self::TODO_LIST,
self::TODO_CREATE,
self::TODO_UPDATE,
self::TODO_TYPE_LIST,
self::TODO_TYPE_CREATE,
self::TODO_TYPE_UPDATE,
]);
}
protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool
{
$loggedUser = $token->getUser();
if (!$loggedUser instanceof UserInterface) {
return false;
}
return in_array($attribute, $loggedUser->getRoles());
}
}