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

Ajout de methode pour la création d'utilisateur depuis la recherche SAS

parent 2d71a38b
Loading
Loading
Loading
Loading
Loading
+41 −1
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace UnicaenUtilisateur\Service\User;

use BjyAuthorize\Provider\Identity\ProviderInterface;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Exception\ORMException;
use InvalidArgumentException;
@@ -52,6 +53,31 @@ class UserService implements RechercheIndividuServiceInterface
    public function setAppname($appname) { $this->appname = $appname;}


    /**
     * @var RechercheIndividuServiceInterface[]
     */
    private array $searchServices;

    /**
     * @param $searchServices
     */
    public function setSearchServices($searchServices) : void
    {
        $this->searchServices = $searchServices;
    }

    private ?string $usernamefield = null;

    public function getUsernamefield(): ?string
    {
        return $this->usernamefield;
    }

    public function setUsernamefield(?string $usernamefield): void
    {
        $this->usernamefield = $usernamefield;
    }

    /**
     * @param string $userEntityClass
     * @return void
@@ -479,5 +505,19 @@ class UserService implements RechercheIndividuServiceInterface

        return $qb->getQuery()->getResult();
    }

    public function createFromSearchData(string $userId): ?UserInterface
    {
        list($source, $id) = explode('||', $userId);
        $sourceUser = $this->searchServices[$source]->findById($id);
        $newUser = $this->importFromRechercheIndividuResultatInterface($sourceUser, $source);
        $user = $this->findByUsername($newUser->getUsername($this->usernamefield));

        if (!$user) {
            $user = $this->create($newUser);
        }
        return $user;

    }
}
+19 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ use UnicaenAuthentification\Options\ModuleOptions;
use UnicaenAuthentification\Service\UserContext;
use UnicaenMail\Service\Mail\MailService;
use UnicaenUtilisateur\Entity\Db\User;
use UnicaenUtilisateur\Service\RechercheIndividu\RechercheIndividuServiceInterface;
use UnicaenUtilisateur\Service\Role\RoleService;
use Laminas\Authentication\AuthenticationService;

@@ -59,6 +60,24 @@ class UserServiceFactory
        $appname = $config['unicaen-app']['app_infos']['nom'];
        $service->setAppname($appname);

        // services de recherche d'un individu : application, ldap, octopus,...
        $rechercheServices = [];
        if(isset($config['unicaen-utilisateur']['recherche-individu']) && !empty($config['unicaen-utilisateur']['recherche-individu'])) {
            foreach ($config['unicaen-utilisateur']['recherche-individu'] as $key => $service_) {

                //sinon boucle ...
                if ($key === 'app') $serviceR = $this;
                else  $serviceR = $container->get($service_);

                if($serviceR instanceof RechercheIndividuServiceInterface) {
                    $rechercheServices[$key] = $serviceR;
                }
            }
        }
        $service->setSearchServices($rechercheServices);
        $usernamefield = $config['unicaen-auth']['local']['ldap']['username'];
        $service->setUsernameField($usernamefield);

        //Récupuration du cout des mots de passe pour le chiffrements
        $options = array_merge(
            $container->get('zfcuser_module_options')->toArray(),