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

Correction plantage lorsque les données d'identité sont de type Utilisateur

parent ce88e826
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ namespace Application\Entity\Db\Repository;
use Application\Entity\Db\Doctorant;
use Application\Entity\Db\EcoleDoctorale;
use Application\Entity\Db\Etablissement;
use Application\Entity\Db\Individu;
use Application\Entity\Db\These;
use Doctrine\ORM\NonUniqueResultException;
use Doctrine\ORM\Query\Expr\Join;
@@ -29,6 +30,22 @@ class DoctorantRepository extends DefaultEntityRepository
        return $qb->getQuery()->getOneOrNullResult();
    }

    /**
     * @param Individu $individu
     * @return Doctorant|null
     * @throws NonUniqueResultException
     */
    public function findOneByIndividu(Individu $individu)
    {
        $qb = $this->createQueryBuilder('d');
        $qb
            ->addSelect('i')
            ->join('d.individu', 'i', Join::WITH, 'i = :individu')
            ->setParameter('individu', $individu);

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

    /**
     * @param EcoleDoctorale|string $ecoleDoctorale ED ou code structure de l'ED
     * @param Etablissement|null $etablissement Etablissement éventuel
+1 −1
Original line number Diff line number Diff line
@@ -112,7 +112,7 @@ class UserWrapper implements UserInterface
                return $this->userData->getEduPersonPrincipalName();

            case $this->userData instanceof Utilisateur:
                throw new DomainException("Non applicable!");
                throw new DomainException("Les données d'identité de type Utilisateur ne sont pas supportées");

            case $this->userData instanceof ShibUser:
                return $this->userData->getEppn();
+9 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ namespace Application\Service\Doctorant;
use Application\Entity\Db\Doctorant;
use Application\Entity\Db\DoctorantCompl;
use Application\Entity\Db\Repository\DoctorantRepository;
use Application\Entity\Db\Utilisateur;
use Application\Entity\UserWrapper;
use Application\Service\BaseService;
use Application\Service\Etablissement\EtablissementServiceAwareTrait;
@@ -62,6 +63,14 @@ class DoctorantService extends BaseService
     */
    public function findOneByUserWrapper(UserWrapper $user)
    {
        if ($individu = $user->getIndividu()) {
            try {
                return $this->getRepository()->findOneByIndividu($individu);
            } catch (NonUniqueResultException $e) {
                throw new RuntimeException("Anomalie: Plusieurs doctorants pour un individu ont été trouvés");
            }
        }

        $id = $user->getSupannId();
        if (! $id) {
//            throw new RuntimeException("Aucun id supann disponible.");