<?phpnamespace App\Security\Api\Authorization\Voter\CoreModule;use App\Helper\Api\Entity\RequestDataContainer;use App\Security\Api\Authorization\Voter\AbstractValidationVoter;use App\Security\Api\Authorization\VoterAttribute\CoreModule\SettingsVoterAttribute;use App\Validator\Api\Data\CoreModule\SettingsDataValidator;use App\Validator\Constraints\Api\CoreModule\Setting\AbstractSettingsGroupIdCompound;/** * Validation voter. * * @package API * @internal */class SettingsValidationVoter extends AbstractValidationVoter{ /** * Constructor. * * @param SettingsDataValidator $validator The standard validator. */ public function __construct(SettingsDataValidator $validator) { $this->validator = $validator; } /** * Returns list of supported attributes. * * @return array */ protected function getSupportedAttributes(): array { return [ SettingsVoterAttribute::getAttribute(SettingsVoterAttribute::METHOD_ID_READ_CORE_MODULE), SettingsVoterAttribute::getAttribute(SettingsVoterAttribute::METHOD_ID_READ_JOB_LAB_KO_CRITERIA), SettingsVoterAttribute::getAttribute(SettingsVoterAttribute::METHOD_ID_READ_TRADE_ASSOCIATION), SettingsVoterAttribute::getAttribute(SettingsVoterAttribute::METHOD_ID_UPDATE_CORE_MODULE), SettingsVoterAttribute::getAttribute(SettingsVoterAttribute::METHOD_ID_UPDATE_JOB_LAB_KO_CRITERIA), SettingsVoterAttribute::getAttribute(SettingsVoterAttribute::METHOD_ID_UPDATE_TRADE_ASSOCIATION) ]; } /** * Validation check. * * @param RequestDataContainer $subject The request data object to validate. */ protected function readCoreModule(RequestDataContainer $subject): void { // no op } /** * Validation check. * * @param RequestDataContainer $subject The request data object to validate. */ protected function readJobLabKOCriteria(RequestDataContainer $subject): void { // no op } /** * Validation check. * * @param RequestDataContainer $subject The request data object to validate. */ protected function readTradeAssociation(RequestDataContainer $subject): void { // no op } /** * Validation check. * * @param RequestDataContainer $subject The request data object to validate. */ protected function updateCoreModule(RequestDataContainer $subject): void { $this->validator->validateSettingsGroup( AbstractSettingsGroupIdCompound::CORE_MODULE_SETTINGS_GROUP_ID, $subject->getInput() ); } /** * Validation check. * * @param RequestDataContainer $subject The request data object to validate. */ protected function updateJobLabKOCriteria(RequestDataContainer $subject): void { $this->validator->validateSettingsGroup( AbstractSettingsGroupIdCompound::JOB_LAB_KO_CRITERIA_SETTINGS_GROUP_ID, $subject->getInput() ); } /** * Validation check. * * @param RequestDataContainer $subject The request data object to validate. */ protected function updateTradeAssociation(RequestDataContainer $subject): void { $this->validator->validateSettingsGroup( AbstractSettingsGroupIdCompound::TRADE_ASSOCIATION_SETTINGS_GROUP_ID, $subject->getInput() ); }}