src/Security/Api/Authorization/Voter/WorkplaceConfigurator/WorkplaceValidationVoter.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Security\Api\Authorization\Voter\WorkplaceConfigurator;
  3. use App\Helper\Api\Entity\RequestDataContainer;
  4. use App\Security\Api\Authorization\Voter\AbstractCrudValidationVoter;
  5. use App\Security\Api\Authorization\VoterAttribute\WorkplaceConfigurator\WorkplaceVoterAttribute;
  6. use App\Validator\Api\Data\CoreModule\OrgUnitDataValidator;
  7. use App\Validator\Api\Data\JobLab\MatchingDataValidator;
  8. use App\Validator\Api\Data\JobLab\MatchingRejectionDataValidator;
  9. use App\Validator\Api\Data\WorkplaceConfigurator\WorkplaceDataValidator;
  10. /**
  11.  * Validation voter.
  12.  *
  13.  * @package API
  14.  * @internal
  15.  */
  16. class WorkplaceValidationVoter extends AbstractCrudValidationVoter
  17. {
  18.     /**
  19.      * Organizational unit validator interface.
  20.      *
  21.      * @var OrgUnitDataValidator
  22.      */
  23.     protected OrgUnitDataValidator $orgUnitDataValidator;
  24.     /**
  25.      * Matching validator interface.
  26.      *
  27.      * @var MatchingDataValidator
  28.      */
  29.     protected MatchingDataValidator $matchingDataValidator;
  30.     /**
  31.      * Matching rejection validator interface.
  32.      *
  33.      * @var MatchingRejectionDataValidator
  34.      */
  35.     protected MatchingRejectionDataValidator $matchingRejectionDataValidator;
  36.     /**
  37.      * Constructor.
  38.      *
  39.      * @param WorkplaceDataValidator $validator The standard validator.
  40.      * @param MatchingDataValidator $matchingDataValidator The matching validator.
  41.      * @param MatchingRejectionDataValidator $matchingRejectionDataValidator The matching rejection validator.
  42.      */
  43.     public function __construct(
  44.         WorkplaceDataValidator $validator,
  45.         OrgUnitDataValidator $orgUnitDataValidator,
  46.         MatchingDataValidator $matchingDataValidator,
  47.         MatchingRejectionDataValidator $matchingRejectionDataValidator)
  48.     {
  49.         // prevent false-positive php:S1185
  50.         $this->validator $validator;
  51.         parent::__construct($validator);
  52.         $this->orgUnitDataValidator $orgUnitDataValidator;
  53.         $this->matchingDataValidator $matchingDataValidator;
  54.         $this->matchingRejectionDataValidator $matchingRejectionDataValidator;
  55.     }
  56.     /**
  57.      * Validation check.
  58.      *
  59.      * @param RequestDataContainer $subject The request data object to validate.
  60.      */
  61.     protected function copy(RequestDataContainer $subject): void
  62.     {
  63.         $this->validator->validateInputCopy($subject->getInput());
  64.     }
  65.     /**
  66.      * Returns list of supported attributes.
  67.      *
  68.      * @return array
  69.      * @noinspection PhpClassConstantAccessedViaChildClassInspection
  70.      */
  71.     protected function getSupportedAttributes(): array
  72.     {
  73.         return [
  74.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_COPY),
  75.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_CREATE),
  76.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_DELETE),
  77.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_LIST),
  78.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_LIST_ORG_UNIT),
  79.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_READ),
  80.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_READ_ORG_UNIT),
  81.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_UPDATE),
  82.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_UPDATE_ACTIVE_STATUS),
  83.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_HOMEPAGE),
  84.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_MATCH),
  85.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_MATCHING_REJECTION_CREATE),
  86.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_MATCHING_REJECTION_DELETE),
  87.             WorkplaceVoterAttribute::getAttribute(WorkplaceVoterAttribute::METHOD_ID_MATCHING_REJECTION_SET_DIRTY),
  88.         ];
  89.     }
  90.     /**
  91.      * Validation check.
  92.      *
  93.      * @param RequestDataContainer $subject The request data object to validate.
  94.      */
  95.     protected function listOrgUnit(RequestDataContainer $subject): void
  96.     {
  97.         $this->orgUnitDataValidator->validateInputList($subject->getInput());
  98.     }
  99.     /**
  100.      * Validation check.
  101.      *
  102.      * @param RequestDataContainer $subject The request data object to validate.
  103.      */
  104.     protected function readOrgUnit(RequestDataContainer $subject): void
  105.     {
  106.         $this->orgUnitDataValidator->validateInputRead($subject->getInput());
  107.     }
  108.     /**
  109.      * Validation check.
  110.      *
  111.      * @param RequestDataContainer $subject The request data object to validate.
  112.      */
  113.     protected function updateActiveStatus(RequestDataContainer $subject): void
  114.     {
  115.         $this->validator->validateInputUpdateActiveStatus($subject->getInput());
  116.     }
  117.     /**
  118.      * Validation check.
  119.      *
  120.      * @param RequestDataContainer $subject The request data object to validate.
  121.      */
  122.     protected function homepage(RequestDataContainer $subject): void
  123.     {
  124.     }
  125.     /**
  126.      * Validation check.
  127.      *
  128.      * @param RequestDataContainer $subject The request data object to validate.
  129.      */
  130.     protected function match(RequestDataContainer $subject): void
  131.     {
  132.         $this->matchingDataValidator->validateWorkplaceInputList($subject->getInput());
  133.     }
  134.     /**
  135.      * Validation check.
  136.      *
  137.      * @param RequestDataContainer $subject The request data object to validate.
  138.      */
  139.     protected function matchingRejectionCreate(RequestDataContainer $subject): void
  140.     {
  141.         $this->matchingRejectionDataValidator->validateInputCreate($subject->getInput());
  142.     }
  143.     /**
  144.      * Validation check.
  145.      *
  146.      * @param RequestDataContainer $subject The request data object to validate.
  147.      */
  148.     protected function matchingRejectionDelete(RequestDataContainer $subject): void
  149.     {
  150.         $this->matchingRejectionDataValidator->validateInputDelete($subject->getInput());
  151.     }
  152. }