Loading src/UnicaenAuth/Controller/UtilisateurController.php +14 −8 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace UnicaenAuth\Controller; use Exception; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Mapper\Ldap\People as LdapPeopleMapper; use UnicaenAuth\Entity\Db\AbstractUser; Loading Loading @@ -132,10 +133,19 @@ class UtilisateurController extends AbstractActionController return $this->redirect()->toRoute('home'); } $utilisateurUsurpe = $this->getUserMapper()->findByUsername($usernameUsurpe); /** @var AbstractUser $utilisateurUsurpe */ if ($utilisateurUsurpe === null) { $this->flashMessenger()->addErrorMessage( "La demande d'usurpation du compte '$usernameUsurpe' a échoué car aucun compte utilisateur correspondant " . "n'a été trouvé." ); return $this->redirect()->toRoute('home'); } $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($utilisateurUsurpe); } return $this->redirect()->toRoute('home'); Loading @@ -144,19 +154,15 @@ class UtilisateurController extends AbstractActionController /** * Cuisine spéciale pour l'usurpation si l'utilisateur courant s'est authentifié via Shibboleth. * * @param string $usernameUsurpe Ex tartempion@unicaen.fr * @param AbstractUser $utilisateurUsurpe Utilisateur à usurper */ protected function usurperIdentiteShib(string $usernameUsurpe) protected function usurperIdentiteShib(AbstractUser $utilisateurUsurpe) { $currentIdentityArray = $this->serviceUserContext->getIdentity(); if (isset($currentIdentityArray['shib']) && $currentIdentityArray['shib'] instanceof ShibUser) { $fromShibUser = $currentIdentityArray['shib']; $toUtilisateur = $this->getUserMapper()->findByUsername($usernameUsurpe); /** @var AbstractUser $toUtilisateur */ if ($toUtilisateur === null) { throw new RuntimeException("L'utilisateur '$usernameUsurpe' n'existe pas dans la table des utilisateurs"); } $this->shibService->activateUsurpation($fromShibUser, $toUtilisateur); $this->shibService->activateUsurpation($fromShibUser, $utilisateurUsurpe); } } Loading Loading
src/UnicaenAuth/Controller/UtilisateurController.php +14 −8 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace UnicaenAuth\Controller; use Exception; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Mapper\Ldap\People as LdapPeopleMapper; use UnicaenAuth\Entity\Db\AbstractUser; Loading Loading @@ -132,10 +133,19 @@ class UtilisateurController extends AbstractActionController return $this->redirect()->toRoute('home'); } $utilisateurUsurpe = $this->getUserMapper()->findByUsername($usernameUsurpe); /** @var AbstractUser $utilisateurUsurpe */ if ($utilisateurUsurpe === null) { $this->flashMessenger()->addErrorMessage( "La demande d'usurpation du compte '$usernameUsurpe' a échoué car aucun compte utilisateur correspondant " . "n'a été trouvé." ); return $this->redirect()->toRoute('home'); } $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($utilisateurUsurpe); } return $this->redirect()->toRoute('home'); Loading @@ -144,19 +154,15 @@ class UtilisateurController extends AbstractActionController /** * Cuisine spéciale pour l'usurpation si l'utilisateur courant s'est authentifié via Shibboleth. * * @param string $usernameUsurpe Ex tartempion@unicaen.fr * @param AbstractUser $utilisateurUsurpe Utilisateur à usurper */ protected function usurperIdentiteShib(string $usernameUsurpe) protected function usurperIdentiteShib(AbstractUser $utilisateurUsurpe) { $currentIdentityArray = $this->serviceUserContext->getIdentity(); if (isset($currentIdentityArray['shib']) && $currentIdentityArray['shib'] instanceof ShibUser) { $fromShibUser = $currentIdentityArray['shib']; $toUtilisateur = $this->getUserMapper()->findByUsername($usernameUsurpe); /** @var AbstractUser $toUtilisateur */ if ($toUtilisateur === null) { throw new RuntimeException("L'utilisateur '$usernameUsurpe' n'existe pas dans la table des utilisateurs"); } $this->shibService->activateUsurpation($fromShibUser, $toUtilisateur); $this->shibService->activateUsurpation($fromShibUser, $utilisateurUsurpe); } } Loading