‪TYPO3CMS  11.5
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 {
47  public function ‪addHmacData(array $formDefinition): array
48  {
49  // Extend the hmac hashing key with a "per form editor session" unique key.
50  $sessionToken = $this->‪generateSessionToken();
51  $this->‪persistSessionToken($sessionToken);
52 
53  $converterDto = GeneralUtility::makeInstance(ConverterDto::class, $formDefinition);
54 
55  GeneralUtility::makeInstance(ArrayProcessor::class, $formDefinition)->forEach(
56  GeneralUtility::makeInstance(
57  ArrayProcessing::class,
58  'addHmacData',
59  '(^identifier$|renderables\.([\d]+)\.identifier$)',
60  GeneralUtility::makeInstance(
61  AddHmacDataConverter::class,
62  $converterDto,
63  $sessionToken
64  )
65  )
66  );
67 
68  return $converterDto->getFormDefinition();
69  }
70 
77  public function ‪removeHmacData(array $formDefinition): array
78  {
79  $converterDto = GeneralUtility::makeInstance(ConverterDto::class, $formDefinition);
80 
81  GeneralUtility::makeInstance(ArrayProcessor::class, $formDefinition)->forEach(
82  GeneralUtility::makeInstance(
83  ArrayProcessing::class,
84  'removeHmacData',
85  '(_orig_.*|.*\._orig_.*)\.hmac',
86  GeneralUtility::makeInstance(
87  RemoveHmacDataConverter::class,
88  $converterDto
89  )
90  )
91  );
92 
93  return $converterDto->getFormDefinition();
94  }
95 
102  public function ‪migrateFinisherConfiguration(array $formDefinition): array
103  {
104  $converterDto = GeneralUtility::makeInstance(ConverterDto::class, $formDefinition);
105 
106  GeneralUtility::makeInstance(ArrayProcessor::class, $formDefinition)->forEach(
107  GeneralUtility::makeInstance(
108  ArrayProcessing::class,
109  'migrateFinisherLanguageSettings',
110  '^finishers\.([\d]+)\.options.translation.language$',
111  GeneralUtility::makeInstance(
112  FinisherTranslationLanguageConverter::class,
113  $converterDto
114  )
115  )
116  );
117 
118  return $converterDto->getFormDefinition();
119  }
120 
124  protected function ‪persistSessionToken(string $sessionToken)
125  {
126  $this->‪getBackendUser()->‪setAndSaveSessionData('extFormProtectionSessionToken', $sessionToken);
127  }
128 
134  protected function ‪generateSessionToken()
135  {
136  return GeneralUtility::makeInstance(Random::class)->generateRandomHexString(64);
137  }
138 
143  {
144  return ‪$GLOBALS['BE_USER'];
145  }
146 }
‪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:134
‪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:124
‪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\ArrayProcessing\ArrayProcessor
Definition: ArrayProcessor.php:30
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService\addHmacData
‪array addHmacData(array $formDefinition)
Definition: FormDefinitionConversionService.php:47
‪TYPO3\CMS\Core\Authentication\AbstractUserAuthentication\setAndSaveSessionData
‪setAndSaveSessionData($key, $data)
Definition: AbstractUserAuthentication.php:1103
‪TYPO3\CMS\Core\SingletonInterface
Definition: SingletonInterface.php:22
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService\removeHmacData
‪array removeHmacData(array $formDefinition)
Definition: FormDefinitionConversionService.php:77
‪TYPO3\CMS\Core\Crypto\Random
Definition: Random.php:24
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService\migrateFinisherConfiguration
‪array migrateFinisherConfiguration(array $formDefinition)
Definition: FormDefinitionConversionService.php:102
‪TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: FormDefinitionConversionService.php:142