EnrichPasswordValidationContextDataEvent¶
New in version 12.3.
The PSR-14 event
\TYPO3\CMS\Core\PasswordPolicy\Event\EnrichPasswordValidationContextDataEvent
allows extensions to enrich the
EXT:core/Classes/PasswordPolicy/Validator/Dto/ContextData.php
DTO used in the
password policy validation.
The PSR-14 event is dispatched in all classes where a user password is validated against the globally configured password policy.
Note
The user data returned by the method getUserData()
will include user
data available from the initiating class only. Therefore, event listeners
should always consider the initiating class name when accessing data from
getUserData()
. If specific user data is not available via
getUserData()
, it can possibly be retrieved by a custom database
query (for example, data from the user table in the password reset process
by fetching the user with the uid
given in getUserData()
array).
Example¶
Registration of the event listener in the extension's Services.yaml
:
MyVendor\MyExtension\PasswordPolicy\EventListener\MyEventListener:
tags:
- name: event.listener
identifier: 'my-extension/enrich-context-data-event-listener'
The corresponding event listener class:
<?php
declare(strict_types=1);
namespace MyVendor\MyExtension\PasswordPolicy\EventListener;
use TYPO3\CMS\Core\DataHandling\DataHandler;
use TYPO3\CMS\Core\PasswordPolicy\Event\EnrichPasswordValidationContextDataEvent;
final class MyEventListener
{
public function __invoke(EnrichPasswordValidationContextDataEvent $event): void
{
if ($event->getInitiatingClass() === DataHandler::class) {
$event->getContextData()->setData('currentMiddleName', $event->getUserData()['middle_name'] ?? '');
$event->getContextData()->setData('currentEmail', $event->getUserData()['email'] ?? '');
}
}
}
API¶
- class TYPO3\CMS\Core\PasswordPolicy\Event\EnrichPasswordValidationContextDataEvent¶
Event is dispatched before the
ContextData
DTO is passed to the password policy validator.Note, that the
$userData
array will include user data available from the initiating class only. Event listeners should therefore always consider the initiating class name when accessing data fromgetUserData()
.- getContextData()¶
- Return type
TYPO3\CMS\Core\PasswordPolicy\Validator\Dto\ContextData
- getUserData()¶
- Return type
array
- getInitiatingClass()¶
- Return type
string