Commit a3e747b5 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

[FIX] Meilleure gestion d'erreur en cas de demande d'usurpation d'un individu...

[FIX] Meilleure gestion d'erreur en cas de demande d'usurpation d'un individu n'ayant pas de compte utilisateur.
parent a87117bb
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ Journal des modifications
  *Attention : aucun script SQL universel de migration d'une base Oracle existante vers une base PostgreSQL n'est fourni 
  avec cette version. Si vous êtes déjà utilisateur de SyGAL en production, prenez contact avec les développeurs de 
  SyGAL pour réaliser une telle migration.*
- [FIX] Meilleure gestion d'erreur en cas de demande d'usurpation d'un individu n'ayant pas de compte utilisateur.

2.2.3
-----
+5 −3
Changes for module/Application/src/Application/Controller/UtilisateurController.php: 5 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -270,21 +270,23 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
        /** @var Utilisateur $utilisateur */
        $utilisateur = $this->utilisateurService->getRepository()->findOneBy(['individu' => $individuId]);
        if ($utilisateur === null) {
            throw new RuntimeException(sprintf(
            $message = sprintf(
                "La demande d'usurpation de l'individu '%s' (%d) a échoué car aucun compte utilisateur correspondant " .
                "n'a été trouvé. " .
                "Pour pouvoir usurper l'identité d'un individu, il faut que celui-ci se soit connecté au moins " .
                "une fois à l'application, de manière à ce que son compte utilisateur ait été créé avec " .
                "des données complètes.",
                $individu, $individu->getId()
            ));
            );
            $this->flashMessenger()->addErrorMessage($message);
            return $this->redirect()->toRoute('home');
        }

        $usernameUsurpe = $utilisateur->getUsername();
        $sessionIdentity = $this->serviceUserContext->usurperIdentite($usernameUsurpe);
        if ($sessionIdentity !== null) {
            // cuisine spéciale si l'utilisateur courant s'est authentifié via Shibboleth
            $this->usurperIdentiteShib($usernameUsurpe);
            $this->usurperIdentiteShib($utilisateur);
        }

        return $this->redirect()->toRoute('home');