Commit 1c2e298d authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Changement des services de recherche

parent 56f0a7e6
Loading
Loading
Loading
Loading
+3 −7
Changes for src/UnicaenUtilisateur/Controller/UtilisateurController.php: 3 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -75,13 +75,11 @@ class UtilisateurController extends AbstractActionController
                switch ($source) {
                    case 'app' :
                        return $this->redirect()->toRoute('unicaen-utilisateur', [], ["query" => ["id" => $id]], true);

                    default :
                        if (isset($this->searchServices[$source])) {
                            $sourceUser = $this->searchServices[$source]->findById($id);
                        $sourceUser = $this->getUserService()->fetchSourceRechercheIndividu($source, $id);
                        if ($sourceUser !== null) {
                            $newUser = $this->userService->importFromRechercheIndividuResultatInterface($sourceUser, $source);
                            $user = $this->userService->findByUsername($newUser->getUsername());

                            if (!$user) {
                                $user = $this->userService->create($newUser);
                            } else {
@@ -89,13 +87,11 @@ class UtilisateurController extends AbstractActionController
                                    sprintf("L'utilisateur <strong>%s (%s)</strong> existe déjà dans l'application.", $user->getDisplayName(), $user->getUsername())
                                );
                            }

                            $this->flashMessenger()->addSuccessMessage(sprintf("Utilisateur <strong>%s</strong> créé avec succès.", $user->getDisplayName()));
                            return $this->redirect()->toRoute('utilisateur', [], ["query" => ["id" => $user->getId()]], true);
                        }
                        else {
                            $this->flashMessenger()->addErrorMessage("La source \"$source\" n'est pas déclarée dans la configuration.");

                            $this->flashMessenger()->addErrorMessage("Aucun utilisateur de trouver dans la source");
                            return $this->redirect()->toRoute('utilisateur', [], [], true);
                        }
                }
+18 −3
Changes for src/UnicaenUtilisateur/Service/User/UserService.php: 18 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -30,6 +30,11 @@ class UserService implements RechercheIndividuServiceInterface
     */
    private $userEntityClass;

    /**
     * @var RechercheIndividuServiceInterface[]
     */
    public $searchServices;
    
    /**
     * @var AuthenticationService
     */
@@ -180,18 +185,28 @@ class UserService implements RechercheIndividuServiceInterface
        return $utilisateurs;
    }

    public function fetchSourceRechercheIndividu($source, $individu) : ?RechercheIndividuResultatInterface
    {
        $this->searchServices['app'] = $this;
        if (isset($this->searchServices[$source])) {
            $sourceUser = $this->searchServices[$source]->findById($individu);
            return $sourceUser;
        };
        return null;
    }
    
    /**
     * @param RechercheIndividuResultatInterface $individu
     * @param string $source
     * @param string $typePassword
     * @return UserInterface
     */
    public function importFromRechercheIndividuResultatInterface(RechercheIndividuResultatInterface $individu, $source)
    public function importFromRechercheIndividuResultatInterface(RechercheIndividuResultatInterface $individu, string $typePassword = 'ldap')
    {
        $utilisateur = $this->getEntityInstance();
        $utilisateur->setDisplayName($individu->getDisplayname());
        $utilisateur->setUsername($individu->getUsername());
        $utilisateur->setEmail($individu->getEmail());
        $utilisateur->setPassword($source);
        $utilisateur->setPassword($typePassword);
        $utilisateur->setState(1);

        return $utilisateur;
+14 −0
Changes for src/UnicaenUtilisateur/Service/User/UserServiceFactory.php: 14 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ use Doctrine\ORM\EntityManager;
use Interop\Container\ContainerInterface;
use UnicaenAuthentification\Service\UserContext;
use UnicaenUtilisateur\Entity\Db\User;
use UnicaenUtilisateur\Service\RechercheIndividu\RechercheIndividuServiceInterface;
use UnicaenUtilisateur\Service\Role\RoleService;
use Laminas\Authentication\AuthenticationService;

@@ -33,6 +34,7 @@ class UserServiceFactory
        $userContext = $container->get(UserContext::class);
        $allConfig = $container->get('Config');
        $authenticationService = $container->get('Laminas\Authentication\AuthenticationService');
        $moduleConfig = $allConfig['unicaen-utilisateur'];
        
        $service = new UserService();
        $service->setEntityManager($entityManager);
@@ -42,6 +44,18 @@ class UserServiceFactory
        $service->setApplicationUsername($allConfig['unicaen-utilisateur']['application-username']);
        $service->setAuthenticationService($authenticationService);

        // services de recherche d'un individu : application, ldap, octopus,...
        $service->searchServices = [];
        if(isset($moduleConfig['recherche-individu']) && !empty($moduleConfig['recherche-individu'])) {
            foreach ($moduleConfig['recherche-individu'] as $key => $siri) {
                $texte = $key . " => " . $siri;
                if ($key !== "app" ) $siri = $container->get($siri);
                if($siri instanceof RechercheIndividuServiceInterface) {
                    $service->searchServices[$key] = $siri;
                }
            }
        }
        
        return $service;
    }
}
 No newline at end of file