Commit 723fea35 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Redirection des mails vers 'CURRENT_USER' (utilisateur connecté) : en cas...

Redirection des mails vers 'CURRENT_USER' (utilisateur connecté) : en cas d'usurpation, l'utilisateur ciblé est l'usurpateur.
parent ef9e770f
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
CHANGELOG
=========

6.0.7
-----
- Redirection des mails vers 'CURRENT_USER' (utilisateur connecté) : en cas d'usurpation, l'utilisateur ciblé est l'usurpateur. 

6.0.6
-----
- [FIX] La redirection des mails vers 'CURRENT_USER' (utilisateur connecté) ne fonctionnait pas si aucun utilisateur n'était connecté !
+8 −2
Original line number Diff line number Diff line
@@ -42,11 +42,17 @@ class MailerServiceFactory extends \UnicaenApp\Service\Mailer\MailerServiceFacto
            return;
        }

        // déterminaiton de l'utilisateur authentifié
        /** @var \UnicaenAuth\Service\UserContext $userContext */
        $userContext = $container->get(UserContext::class);
        if ($userContext->isUsurpationEnCours()) {
            $user = $userContext->getUsurpateurEnCours();
        } else {
            $user = $userContext->getDbUser();
        if ($user !== null) {
        }

        // si un utilisateur est authentifié, on ajoute son adresse mail (si pas déjà présente)
        if ($user !== null) {
            if (!in_array($email = $user->getEmail(), $redirectTo) && !array_key_exists($email, $redirectTo)) {
                $redirectTo[$email] = $user->getDisplayName();
            }
+16 −0
Original line number Diff line number Diff line
@@ -475,6 +475,22 @@ class UserContext extends AbstractService implements EventManagerAwareInterface
        return isset($currentIdentity['usurpation']);
    }

    /**
     * Si une usurpation est en cours, retourne l'usurpateur.
     *
     * @throws \BadMethodCallException Si aucune usurpation n'est en cours
     */
    public function getUsurpateurEnCours(): AbstractUser
    {
        if (! $this->isUsurpationEnCours()) {
            throw new \BadMethodCallException("Il faut qu'une usurpation soit en cours pour pouvoir obtenir l'usurpateur !");
        }

        $currentIdentityArray = $this->getIdentity();

        return Usurpation::extractUsurpateurFromIdentityArray($currentIdentityArray);
    }

    /**
     * Usurpe l'identité d'un autre utilisateur.
     * @param string $usernameUsurpe