‪TYPO3CMS  ‪main
CollectionBasedValidator.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
22 
27 {
37  array ‪$currentElement,
38  $value,
39  string ‪$sessionToken,
40  ‪ValidationDto $dto
41  ): void {
42  $hmacDataPath = $this->‪buildHmacDataPath($dto->‪getPropertyPath());
43  if (‪ArrayUtility::isValidPath(‪$currentElement, $hmacDataPath, '.')) {
44  $hmacData = ‪ArrayUtility::getValueByPath(‪$currentElement, $hmacDataPath, '.');
45 
46  $hmacContent = [
50  $dto->‪getPropertyPath(),
51  ];
52 
53  if (!$this->‪getFormDefinitionValidationService()->isPropertyValueEqualToHistoricalValue($hmacContent, $value, $hmacData, ‪$sessionToken)) {
54  $message = 'The value "%s" of property "%s" (form element "%s" / "%s.%s") is not equal to the historical value "%s" #1528591586';
55  throw new ‪PropertyException(
56  sprintf(
57  $message,
58  $value,
59  $dto->‪getPropertyPath(),
63  $hmacData['value'] ?? ''
64  ),
65  1528591586
66  );
67  }
68  } else {
69  $message = 'No hmac found for property "%s" (form element "%s" / "%s.%s") #1528591585';
70  throw new ‪PropertyException(
71  sprintf(
72  $message,
73  $dto->‪getPropertyPath(),
77  ),
78  1528591585
79  );
80  }
81  }
82 }
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\ValidationDto\getPropertyCollectionName
‪getPropertyCollectionName()
Definition: ValidationDto.php:84
‪TYPO3\CMS\Extbase\Property\Exception
Definition: DuplicateObjectException.php:18
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\AbstractValidator\$sessionToken
‪string $sessionToken
Definition: AbstractValidator.php:35
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\AbstractValidator\$currentElement
‪array $currentElement
Definition: AbstractValidator.php:31
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\ValidationDto
Definition: ValidationDto.php:23
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\AbstractValidator\getFormDefinitionValidationService
‪getFormDefinitionValidationService()
Definition: AbstractValidator.php:60
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\ValidationDto\getFormElementIdentifier
‪getFormElementIdentifier()
Definition: ValidationDto.php:74
‪TYPO3\CMS\Core\Utility\ArrayUtility\isValidPath
‪static bool isValidPath(array $array, array|string $path, string $delimiter='/')
Definition: ArrayUtility.php:141
‪TYPO3\CMS\Core\Utility\ArrayUtility\getValueByPath
‪static getValueByPath(array $array, array|string $path, string $delimiter='/')
Definition: ArrayUtility.php:176
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\ValidationDto\getPropertyCollectionElementIdentifier
‪getPropertyCollectionElementIdentifier()
Definition: ValidationDto.php:89
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\CollectionBasedValidator
Definition: CollectionBasedValidator.php:27
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\CollectionBasedValidator\validatePropertyCollectionElementPropertyValueByHmacData
‪validatePropertyCollectionElementPropertyValueByHmacData(array $currentElement, $value, string $sessionToken, ValidationDto $dto)
Definition: CollectionBasedValidator.php:36
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators
Definition: AbstractValidator.php:18
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\AbstractValidator\buildHmacDataPath
‪buildHmacDataPath(string $propertyPath)
Definition: AbstractValidator.php:51
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\ValidationDto\getPropertyPath
‪getPropertyPath()
Definition: ValidationDto.php:79
‪TYPO3\CMS\Core\Utility\ArrayUtility
Definition: ArrayUtility.php:26
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\AbstractValidator
Definition: AbstractValidator.php:28
‪TYPO3\CMS\Form\Domain\Configuration\Exception\PropertyException
Definition: PropertyException.php:25