femanager icon indicating copy to clipboard operation
femanager copied to clipboard

[FEATURE] Add AfterUserConfirmEvent

Open dkd-hauser opened this issue 2 months ago • 0 comments

We had the requirement to implement an additional supervisor confirmation after the user has confirmed themselves. Only then are further steps taken, such as admin confirmation.

Therefore, we needed a new event AfterUserConfirmation.

add Classes/Event/AfterUserConfirmEvent.php

<?php

declare(strict_types=1);

namespace In2code\Femanager\Event;

use In2code\Femanager\Domain\Model\User;

/**
 * Event that is dispatched after a frontend user has successfully confirmed
 */
final class AfterUserConfirmEvent
{
    public function __construct(
        private readonly ?User $user,
        private readonly string $hash,
        private readonly string $status
    ) {
    }

    public function getUser(): ?User
    {
        return $this->user;
    }

    public function getHash(): string
    {
        return $this->hash;
    }

    public function getStatus(): string
    {
        return $this->status;
    }
}

to make that work with enabled confirm user confirmation feature (confirmUserConfirmation = 1) the function statusUserConfirmation in NewController.php has to be extended:

Index: Classes/Controller/NewController.php
===================================================================
--- /Classes/Controller/NewController.php
+++ /Classes/Controller/NewController.php
@@ -12,6 +12,7 @@
 use In2code\Femanager\Domain\Validator\ServersideValidator;
 use In2code\Femanager\Event\BeforeUserConfirmEvent;
 use In2code\Femanager\Event\BeforeUserCreateEvent;
+use In2code\Femanager\Event\AfterUserConfirmEvent;
 use In2code\Femanager\Event\CreateConfirmationRequestEvent;
 use In2code\Femanager\Event\UserWasConfirmedByAdminEvent;
 use In2code\Femanager\Utility\ConfigurationUtility;
@@ -262,6 +262,7 @@
             $this->userRepository->update($user);
             $this->persistenceManager->persistAll();
             $this->logUtility->log(Log::STATUS_REGISTRATIONCONFIRMEDUSER, $user);
+            $this->eventDispatcher->dispatch(new AfterUserConfirmEvent($user, $hash, $status));
 
             if ($this->isAdminConfirmationMissing($user)) {
                 $this->createAdminConfirmationRequest($user);

It would be nice if this feature were adopted and also backported to v8.3.

dkd-hauser avatar Oct 31 '25 11:10 dkd-hauser