EnrichPasswordValidationContextDataEvent
New in version 12.3
The PSR-14 event
\TYPO3\
allows extensions to enrich the
EXT:core/Classes/PasswordPolicy/Validator/Dto/ContextData.php (GitHub)
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 get
will include user
data available from the initiating class only. Therefore, event listeners
should always consider the initiating class name when accessing data from
get
. If specific user data is not available via
get
, 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 get
array).
Example
Registration of the event listener in the extension's Services.
:
services:
# Place here the default dependency injection configuration
MyVendor\MyExtension\PasswordPolicy\EventListener\MyEventListener:
tags:
- name: event.listener
identifier: 'my-extension/enrich-context-data-event-listener'
Read how to configure dependency injection in extensions.
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 EnrichPasswordValidationContextDataEvent
-
- Fully qualified name
-
\TYPO3\
CMS\ Core\ Password Policy\ Event\ Enrich Password Validation Context Data Event
Event is dispatched before the
Context
DTO is passed to the password policy validator.Data Note, that the
$user
array will include user data available from the initiating class only. Event listeners should therefore always consider the initiating class name when accessing data fromData get
.User Data ()