src/Security/Api/Authorization/Voter/CoreModule/UserValidationVoter.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Security\Api\Authorization\Voter\CoreModule;
  3. use App\Helper\Api\Entity\RequestDataContainer;
  4. use App\Security\Api\Authorization\Voter\AbstractCrudValidationVoter;
  5. use App\Security\Api\Authorization\VoterAttribute\CoreModule\UserVoterAttribute;
  6. use App\Validator\Api\Data\CoreModule\OrgUnitDataValidator;
  7. use App\Validator\Api\Data\CoreModule\UserDataValidator;
  8. /**
  9.  * Validation voter.
  10.  *
  11.  * @package API
  12.  * @internal
  13.  */
  14. class UserValidationVoter extends AbstractCrudValidationVoter
  15. {
  16.     /**
  17.      * Organizational unit validator interface.
  18.      *
  19.      * @var OrgUnitDataValidator
  20.      */
  21.     protected OrgUnitDataValidator $orgUnitDataValidator;
  22.     /**
  23.      * Constructor.
  24.      *
  25.      * @param UserDataValidator $validator The standard validator.
  26.      * @param OrgUnitDataValidator $orgUnitDataValidator Organizational unit validator.
  27.      */
  28.     public function __construct(UserDataValidator $validatorOrgUnitDataValidator $orgUnitDataValidator)
  29.     {
  30.         // prevent false-positive php:S1185
  31.         $this->validator $validator;
  32.         parent::__construct($validator);
  33.         $this->orgUnitDataValidator $orgUnitDataValidator;
  34.     }
  35.     /**
  36.      * Returns list of supported attributes.
  37.      *
  38.      * @return array
  39.      * @noinspection PhpClassConstantAccessedViaChildClassInspection
  40.      */
  41.     protected function getSupportedAttributes(): array
  42.     {
  43.         return [
  44.             UserVoterAttribute::getAttribute(UserVoterAttribute::METHOD_ID_CREATE),
  45.             UserVoterAttribute::getAttribute(UserVoterAttribute::METHOD_ID_DELETE),
  46.             UserVoterAttribute::getAttribute(UserVoterAttribute::METHOD_ID_LIST),
  47.             UserVoterAttribute::getAttribute(UserVoterAttribute::METHOD_ID_READ),
  48.             UserVoterAttribute::getAttribute(UserVoterAttribute::METHOD_ID_READ_ROLES),
  49.             UserVoterAttribute::getAttribute(UserVoterAttribute::METHOD_ID_READ_SCOPE),
  50.             UserVoterAttribute::getAttribute(UserVoterAttribute::METHOD_ID_READ_SCOPE_TREE),
  51.             UserVoterAttribute::getAttribute(UserVoterAttribute::METHOD_ID_UPDATE),
  52.             UserVoterAttribute::getAttribute(UserVoterAttribute::METHOD_ID_UPDATE_ACTIVE_STATUS),
  53.             UserVoterAttribute::getAttribute(UserVoterAttribute::METHOD_ID_UPDATE_ROLES),
  54.             UserVoterAttribute::getAttribute(UserVoterAttribute::METHOD_ID_UPDATE_SCOPE)
  55.         ];
  56.     }
  57.     /**
  58.      * Validation check.
  59.      *
  60.      * @param RequestDataContainer $subject The request data object to validate.
  61.      */
  62.     protected function readRoles(RequestDataContainer $subject): void
  63.     {
  64.         $this->validator->validateInputReadRoles($subject->getInput());
  65.     }
  66.     /**
  67.      * Validation check.
  68.      *
  69.      * @param RequestDataContainer $subject The request data object to validate.
  70.      */
  71.     protected function readScope(RequestDataContainer $subject): void
  72.     {
  73.         $this->validator->validateInputReadScope($subject->getInput());
  74.     }
  75.     /**
  76.      * Validation check.
  77.      *
  78.      * @param RequestDataContainer $subject The request data object to validate.
  79.      */
  80.     protected function readScopeTree(RequestDataContainer $subject): void
  81.     {
  82.         $this->orgUnitDataValidator->validateInputReadScopeTree($subject->getInput());
  83.     }
  84.     /**
  85.      * Validation check.
  86.      *
  87.      * @param RequestDataContainer $subject The request data object to validate.
  88.      */
  89.     protected function updateRoles(RequestDataContainer $subject): void
  90.     {
  91.         $this->validator->validateInputUpdateRoles($subject->getInput());
  92.     }
  93.     /**
  94.      * Validation check.
  95.      *
  96.      * @param RequestDataContainer $subject The request data object to validate.
  97.      */
  98.     protected function updateScope(RequestDataContainer $subject): void
  99.     {
  100.         $this->validator->validateInputUpdateScope($subject->getInput());
  101.     }
  102. }