‪TYPO3CMS  ‪main
FormDefinitionConversionService.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 
30 
35 {
44  public function ‪addHmacData(array $formDefinition): array
45  {
46  // Extend the hmac hashing key with a "per form editor session" unique key.
47  $sessionToken = $this->‪generateSessionToken();
48  $this->‪persistSessionToken($sessionToken);
49 
50  $converterDto = GeneralUtility::makeInstance(ConverterDto::class, $formDefinition);
51 
52  GeneralUtility::makeInstance(ArrayProcessor::class, $formDefinition)->forEach(
53  GeneralUtility::makeInstance(
54  ArrayProcessing::class,
55  'addHmacData',
56  '(^identifier$|renderables\.([\d]+)\.identifier$)',
57  GeneralUtility::makeInstance(
58  AddHmacDataConverter::class,
59  $converterDto,
60  $sessionToken
61  )
62  )
63  );
64 
65  return $converterDto->getFormDefinition();
66  }
67 
71  public function ‪removeHmacData(array $formDefinition): array
72  {
73  $converterDto = GeneralUtility::makeInstance(ConverterDto::class, $formDefinition);
74 
75  GeneralUtility::makeInstance(ArrayProcessor::class, $formDefinition)->forEach(
76  GeneralUtility::makeInstance(
77  ArrayProcessing::class,
78  'removeHmacData',
79  '(_orig_.*|.*\._orig_.*)\.hmac',
80  GeneralUtility::makeInstance(
81  RemoveHmacDataConverter::class,
82  $converterDto
83  )
84  )
85  );
86 
87  return $converterDto->getFormDefinition();
88  }
89 
93  public function ‪migrateFinisherConfiguration(array $formDefinition): array
94  {
95  $converterDto = GeneralUtility::makeInstance(ConverterDto::class, $formDefinition);
96 
97  GeneralUtility::makeInstance(ArrayProcessor::class, $formDefinition)->forEach(
98  GeneralUtility::makeInstance(
99  ArrayProcessing::class,
100  'migrateFinisherLanguageSettings',
101  '^finishers\.([\d]+)\.options.translation.language$',
102  GeneralUtility::makeInstance(
103  FinisherTranslationLanguageConverter::class,
104  $converterDto
105  )
106  )
107  );
108 
109  return $converterDto->getFormDefinition();
110  }
111 
112  protected function ‪persistSessionToken(string $sessionToken)
113  {
114  $this->‪getBackendUser()->setAndSaveSessionData('extFormProtectionSessionToken', $sessionToken);
115  }
116 
122  protected function ‪generateSessionToken()
123  {
124  return GeneralUtility::makeInstance(Random::class)->generateRandomHexString(64);
125  }
126 
128  {
129  return ‪$GLOBALS['BE_USER'];
130  }
131 }
‪TYPO3\CMS\Form\Domain\Configuration
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Converters\FinisherTranslationLanguageConverter
Definition: FinisherTranslationLanguageConverter.php:26
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Converters\ConverterDto
Definition: ConverterDto.php:24
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService
Definition: FormDefinitionConversionService.php:35
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService\generateSessionToken
‪string generateSessionToken()
Definition: FormDefinitionConversionService.php:122
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Converters\RemoveHmacDataConverter
Definition: RemoveHmacDataConverter.php:26
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService\persistSessionToken
‪persistSessionToken(string $sessionToken)
Definition: FormDefinitionConversionService.php:112
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinition\Converters\AddHmacDataConverter
Definition: AddHmacDataConverter.php:29
‪TYPO3\CMS\Form\Domain\Configuration\ArrayProcessing\ArrayProcessing
Definition: ArrayProcessing.php:27
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService\removeHmacData
‪removeHmacData(array $formDefinition)
Definition: FormDefinitionConversionService.php:71
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService\migrateFinisherConfiguration
‪migrateFinisherConfiguration(array $formDefinition)
Definition: FormDefinitionConversionService.php:93
‪TYPO3\CMS\Form\Domain\Configuration\ArrayProcessing\ArrayProcessor
Definition: ArrayProcessor.php:30
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService\getBackendUser
‪getBackendUser()
Definition: FormDefinitionConversionService.php:127
‪TYPO3\CMS\Core\SingletonInterface
Definition: SingletonInterface.php:22
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Crypto\Random
Definition: Random.php:27
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService\addHmacData
‪addHmacData(array $formDefinition)
Definition: FormDefinitionConversionService.php:44
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52