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:

EXT:my_extension/Configuration/Services.yaml
MyVendor\MyExtension\PasswordPolicy\EventListener\MyEventListener:
  tags:
    - name: event.listener
      identifier: 'my-extension/enrich-context-data-event-listener'

The corresponding event listener class:

EXT:my_extension/Classes/Redirects/EventListener/MyEventListener.php
<?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 from getUserData().

getContextData()
Return type

TYPO3\CMS\Core\PasswordPolicy\Validator\Dto\ContextData

getUserData()
Return type

array

getInitiatingClass()
Return type

string