<?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 AdvAdminVoter extends Voter
{
const REQUEST_STATE_LIST = "ADV_ADMIN_REQUEST_STATE_LIST";
const REQUEST_STATE_CREATE = "ADV_ADMIN_REQUEST_STATE_CREATE";
const REQUEST_STATE_UPDATE = "ADV_ADMIN_REQUEST_STATE_UPDATE";
const MAJOR_CHANGES_LIST = "ADV_ADMIN_MAJOR_CHANGES_LIST";
const MAJOR_CHANGES_CREATE = "ADV_ADMIN_MAJOR_CHANGES_CREATE";
const MAJOR_CHANGES_UPDATE = "ADV_ADMIN_MAJOR_CHANGES_UPDATE";
const MAJOR_CHANGES_REMOVE = "ADV_ADMIN_MAJOR_CHANGES_REMOVE";
const CUSTOMER_SERVICE_SCHEDULE_LIST = "ADV_ADMIN_CUSTOMER_SERVICE_SCHEDULE_LIST";
const FORMALITY_TYPE_LIST = "ADV_ADMIN_FORMALITY_TYPE_LIST";
const FORMALITY_TYPE_CREATE = "ADV_ADMIN_FORMALITY_TYPE_CREATE";
const FORMALITY_TYPE_UPDATE = "ADV_ADMIN_FORMALITY_TYPE_UPDATE";
const FORMALITY_LIST = "ADV_ADMIN_FORMALITY_LIST";
const FORMALITY_CREATE = "ADV_ADMIN_FORMALITY_CREATE";
const FORMALITY_UPDATE = "ADV_ADMIN_FORMALITY_UPDATE";
const FIP_LIST = "ADV_ADMIN_FIP_LIST";
const FIP_CREATE = "ADV_ADMIN_FIP_CREATE";
const FIP_UPDATE = "ADV_ADMIN_FIP_UPDATE";
const FIP_REMOVE = "ADV_ADMIN_FIP_REMOVE";
const SPECIAL_REQUEST_STATE_LIST = "ADV_ADMIN_SPECIAL_REQUEST_STATE_LIST";
const SPECIAL_REQUEST_STATE_CREATE = "ADV_ADMIN_SPECIAL_REQUEST_STATE_CREATE";
const SPECIAL_REQUEST_STATE_UPDATE = "ADV_ADMIN_SPECIAL_REQUEST_STATE_UPDATE";
const CGV_LIST = "ADV_ADMIN_CGV_LIST";
const CGV_CREATE = "ADV_ADMIN_CGV_CREATE";
const CGV_UPDATE = "ADV_ADMIN_CGV_UPDATE";
const CGV_DETAIL = "ADV_ADMIN_CGV_DETAIL";
const COMPLAINT_LIST = "ADV_ADMIN_COMPLAINT_LIST";
const COMPLAINT_STATE_LIST = "ADV_ADMIN_COMPLAINT_STATE_LIST";
const COMPLAINT_STATE_CREATE = "ADV_ADMIN_COMPLAINT_STATE_CREATE";
const COMPLAINT_STATE_UPDATE = "ADV_ADMIN_COMPLAINT_STATE_UPDATE";
protected function supports($attribute, $subject): bool
{
return in_array($attribute, [
self::REQUEST_STATE_LIST,
self::REQUEST_STATE_CREATE,
self::REQUEST_STATE_UPDATE,
self::MAJOR_CHANGES_LIST,
self::MAJOR_CHANGES_CREATE,
self::MAJOR_CHANGES_UPDATE,
self::MAJOR_CHANGES_REMOVE,
self::CUSTOMER_SERVICE_SCHEDULE_LIST,
self::FORMALITY_TYPE_LIST,
self::FORMALITY_TYPE_CREATE,
self::FORMALITY_TYPE_UPDATE,
self::FORMALITY_LIST,
self::FORMALITY_CREATE,
self::FORMALITY_UPDATE,
self::FIP_LIST,
self::FIP_CREATE,
self::FIP_UPDATE,
self::FIP_REMOVE,
self::SPECIAL_REQUEST_STATE_LIST,
self::SPECIAL_REQUEST_STATE_CREATE,
self::SPECIAL_REQUEST_STATE_UPDATE,
self::CGV_LIST,
self::CGV_CREATE,
self::CGV_UPDATE,
self::CGV_DETAIL,
self::COMPLAINT_LIST,
self::COMPLAINT_STATE_LIST,
self::COMPLAINT_STATE_CREATE,
self::COMPLAINT_STATE_UPDATE,
]);
}
protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool
{
$loggedUser = $token->getUser();
if (!$loggedUser instanceof UserInterface) {
return false;
}
return in_array($attribute, $loggedUser->getRoles());
}
}