‪TYPO3CMS  9.5
ElementBasedValidator.php
Go to the documentation of this file.
1 <?php
2 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 
20 
25 {
26 
39  array ‪$currentElement,
40  $value,
41  string ‪$sessionToken,
42  ‪ValidationDto $dto
43  ): void {
44  $hmacDataPath = $this->‪buildHmacDataPath($dto->‪getPropertyPath());
45  if (‪ArrayUtility::isValidPath(‪$currentElement, $hmacDataPath, '.')) {
46  $hmacData = ‪ArrayUtility::getValueByPath(‪$currentElement, $hmacDataPath, '.');
47 
48  $hmacContent = [$dto->‪getFormElementIdentifier(), $dto->‪getPropertyPath()];
49  if (!$this->‪getFormDefinitionValidationService()->isPropertyValueEqualToHistoricalValue($hmacContent, $value, $hmacData, ‪$sessionToken)) {
50  $message = 'The value "%s" of property "%s" (form element "%s") is not equal to the historical value "%s" #1528588036';
51  throw new ‪PropertyException(
52  sprintf(
53  $message,
54  $value,
55  $dto->‪getPropertyPath(),
57  $hmacData['value'] ?? ''
58  ),
59  1528588036
60  );
61  }
62  } else {
63  $message = 'No hmac found for property "%s" (form element "%s") #1528588037';
64  throw new ‪PropertyException(
65  sprintf($message, $dto->‪getPropertyPath(), $dto->‪getFormElementIdentifier()),
66  1528588037
67  );
68  }
69  }
70 }
‪TYPO3\CMS\Extbase\Property\Exception
Definition: DuplicateObjectException.php:2
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\AbstractValidator\$sessionToken
‪string $sessionToken
Definition: AbstractValidator.php:39
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\AbstractValidator\$currentElement
‪array $currentElement
Definition: AbstractValidator.php:35
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\ValidationDto
Definition: ValidationDto.php:23
‪TYPO3\CMS\Core\Utility\ArrayUtility\isValidPath
‪static bool isValidPath(array $array, $path, $delimiter='/')
Definition: ArrayUtility.php:143
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\AbstractValidator\buildHmacDataPath
‪string buildHmacDataPath(string $propertyPath)
Definition: AbstractValidator.php:63
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\ValidationDto\getPropertyPath
‪string getPropertyPath()
Definition: ValidationDto.php:100
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\ElementBasedValidator
Definition: ElementBasedValidator.php:25
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\ValidationDto\getFormElementIdentifier
‪string getFormElementIdentifier()
Definition: ValidationDto.php:92
‪TYPO3\CMS\Core\Utility\ArrayUtility\getValueByPath
‪static mixed getValueByPath(array $array, $path, $delimiter='/')
Definition: ArrayUtility.php:179
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\AbstractValidator\getFormDefinitionValidationService
‪FormDefinitionValidationService getFormDefinitionValidationService()
Definition: AbstractValidator.php:75
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators
Definition: AbstractValidator.php:3
‪TYPO3\CMS\Core\Utility\ArrayUtility
Definition: ArrayUtility.php:23
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\ElementBasedValidator\validateFormElementPropertyValueByHmacData
‪validateFormElementPropertyValueByHmacData(array $currentElement, $value, string $sessionToken, ValidationDto $dto)
Definition: ElementBasedValidator.php:38
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Validators\AbstractValidator
Definition: AbstractValidator.php:27
‪TYPO3\CMS\Form\Domain\Configuration\Exception\PropertyException
Definition: PropertyException.php:24