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

Reformattage, nettoyage et documentation de code

parent 5d15315c
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -39,13 +39,19 @@ class IndividuRepository extends DefaultEntityRepository
    }

    /**
     * Recherche l'Individu correspondant à un Utilisateur, au sein d'un Etablissement.
     *
     * @param UserWrapper   $userWrapper
     * @param Etablissement $etablissement
     * @return Individu
     */
    public function findOneByUserWrapperAndEtab(UserWrapper $userWrapper, Etablissement $etablissement)
    {
        $sourceCode = $this->sourceCodeStringHelper->addEtablissementPrefixTo($userWrapper->getSupannId(), $etablissement);
        // C'est le "supann{Emp|Etu}Id" présent dans les données d'authentification qui nous permet de trouver
        // l'Individu correspodant à l'Utilisateur.
        $supannId = $userWrapper->getSupannId();

        $sourceCode = $this->sourceCodeStringHelper->addEtablissementPrefixTo($supannId, $etablissement);

        return $this->findOneBySourceCode($sourceCode);

@@ -67,13 +73,19 @@ class IndividuRepository extends DefaultEntityRepository
        $text = Util::reduce($text);
        $criteres = explode(' ', $text);

        $sql = sprintf('SELECT * FROM INDIVIDU i JOIN INDIVIDU_RECH ir on ir.id = i.id WHERE i.HISTO_DESTRUCTION IS NULL AND rownum <= %s ', (int)$limit);
        $sqlTemplate =
            "SELECT * FROM INDIVIDU i " .
            "JOIN INDIVIDU_RECH ir on ir.id = i.id " .
            "WHERE i.HISTO_DESTRUCTION IS NULL AND rownum <= %d";
        if ($type !== null) {
            $sql = sprintf('SELECT * FROM INDIVIDU i JOIN INDIVIDU_RECH ir on ir.id = i.id WHERE i.HISTO_DESTRUCTION IS NULL AND  i.type = \'%s\' AND  rownum <= %s ', $type, (int)$limit);
            $sqlTemplate .= " AND i.type = '%s'";
            $sql = sprintf($sqlTemplate, $type, (int)$limit);
            $tmp = null;
        } else {
            $sql = sprintf($sqlTemplate, (int)$limit);
        }
        $sqlCri  = [];

        $sqlCri = [];
        foreach ($criteres as $c) {
            $sqlCri[] = "ir.haystack LIKE LOWER(q'[%" . $c . "%]')"; // q'[] : double les quotes
        }
@@ -102,8 +114,7 @@ class IndividuRepository extends DefaultEntityRepository
        $qb = $repo->createQueryBuilder("ir")
            ->join(Individu::class, "in")
            ->andWhere("ir.role = :role")
            ->setParameter("role", $role)
        ;
            ->setParameter("role", $role);
        $query = $qb->getQuery();
        /** @var IndividuRole[] $res */
        $res = $query->execute();
+61 −48
Original line number Diff line number Diff line
@@ -110,19 +110,26 @@ class UserWrapper implements UserInterface
            case $this->userData instanceof UnicaenLdapPeople:
            case $this->userData instanceof UnicaenAppPeople:
                return $this->userData->getEduPersonPrincipalName();
                break;

            case $this->userData instanceof Utilisateur:
                throw new DomainException("Non applicable!");
                break;

            case $this->userData instanceof ShibUser:
                return $this->userData->getEppn();
                break;
        }

            default:
                throw new LogicException("Cas imprévu!");
        }
    }

    /**
     * Retourne l'identifiant "supannEmpId" éventuel, en fonction de la nauture des données utilisateur disponibles.
     *
     * Valeur retournée :
     * - Si les données utilisateur proviennent de l'annuaire LDAP : l'attribut "supannEmpId" ;
     * - Si les données utilisateur proviennent de Shibboleth : l'id (dont la valeur est sensée être un supann{Emp|Etu}Id).
     * - Sinon : null
     *
     * @return string|null
     * @throws DomainException Si l'EPPN n'a pas de sens pour les données utilisateur courantes
     */
@@ -132,19 +139,23 @@ class UserWrapper implements UserInterface
            case $this->userData instanceof UnicaenLdapPeople:
            case $this->userData instanceof UnicaenAppPeople:
                return $this->userData->getSupannEmpId();
                break;
//            case $this->user instanceof AbstractUser:
//                throw new LogicException("Non applicable!");
//                break;

            case $this->userData instanceof ShibUser:
                return $this->userData->getId();
                break;
        }

            default:
                return null;
        }
    }

    /**
     * Retourne l'identifiant "supannEtuId" éventuel, en fonction de la nauture des données utilisateur disponibles.
     *
     * Valeur retournée :
     * - Si les données utilisateur proviennent de l'annuaire LDAP : l'attribut "supannEtuId" ;
     * - Si les données utilisateur proviennent de Shibboleth : l'id (dont la valeur est sensée être un supann{Emp|Etu}Id).
     * - Sinon : null
     *
     * @return string|null
     * @throws DomainException Si l'EPPN n'a pas de sens pour les données utilisateur courantes
     */
@@ -154,20 +165,20 @@ class UserWrapper implements UserInterface
            case $this->userData instanceof UnicaenLdapPeople:
            case $this->userData instanceof UnicaenAppPeople:
                return $this->userData->getSupannEtuId();
                break;
//            case $this->user instanceof Utilisateur:
//                throw new DomainException("Non applicable!");
//                break;

            case $this->userData instanceof ShibUser:
                return $this->userData->getId();
                break;
        }

            default:
                return null;
        }
    }

    /**
     * Retourne soit le supannEmpId soit le supannEtuId, ou null.
     * Retourne :
     * - soit le "supann{Emp|Etu}Id" issu des données utilisateur ;
     * - soit le "supannId" des données individu éventuelles ;
     * - soit null.
     *
     * @return string|null
     */
@@ -201,17 +212,17 @@ class UserWrapper implements UserInterface
            case $this->userData instanceof UnicaenLdapPeople:
            case $this->userData instanceof UnicaenAppPeople:
                return $this->userData->getSn(true);
                break;

            case $this->userData instanceof Utilisateur:
                throw new RuntimeException("Cas non implementé car la classe Utilisateur n'a pas de propriété 'nom'");
                break;

            case $this->userData instanceof ShibUser:
                return $this->userData->getNom();
                break;
        }

            default:
                throw new LogicException("Cas imprévu!");
        }
    }

    /**
     * Get prenom.
@@ -228,17 +239,17 @@ class UserWrapper implements UserInterface
            case $this->userData instanceof UnicaenLdapPeople:
            case $this->userData instanceof UnicaenAppPeople:
                return $this->userData->getGivenName();
                break;

            case $this->userData instanceof Utilisateur:
                throw new RuntimeException("Cas non implementé car la classe Utilisateur n'a pas de propriété 'prenom'");
                break;

            case $this->userData instanceof ShibUser:
                return $this->userData->getPrenom();
                break;
        }

            default:
                throw new LogicException("Cas imprévu!");
        }
    }

    /**
     * Get civilite.
@@ -255,16 +266,17 @@ class UserWrapper implements UserInterface
            case $this->userData instanceof UnicaenLdapPeople:
            case $this->userData instanceof UnicaenAppPeople:
                return $this->userData->getSupannCivilite();
                break;

            case $this->userData instanceof Utilisateur:
                throw new RuntimeException("Cas non implementé car la classe Utilisateur n'a pas de propriété 'civilite'");
                break;

            case $this->userData instanceof ShibUser:
                return $this->userData->getCivilite();
                break;
        }

            default:
                throw new LogicException("Cas imprévu!");

        }
    }


@@ -281,15 +293,15 @@ class UserWrapper implements UserInterface
            case $this->userData instanceof UnicaenLdapPeople:
            case $this->userData instanceof UnicaenAppPeople:
                return $this->userData->getId();
                break;

            case $this->userData instanceof Utilisateur:
            case $this->userData instanceof ShibUser:
                return $this->userData->getId();
                break;
        }

            default:
                throw new LogicException("Cas imprévu!");
        }
    }

    /**
     * Set id.
@@ -312,15 +324,15 @@ class UserWrapper implements UserInterface
            case $this->userData instanceof UnicaenLdapPeople:
            case $this->userData instanceof UnicaenAppPeople:
                return $this->userData->getSupannAliasLogin();
                break;

            case $this->userData instanceof Utilisateur:
            case $this->userData instanceof ShibUser:
                return $this->userData->getUsername();
                break;
        }

            default:
                throw new LogicException("Cas imprévu!");
        }
    }

    /**
     * Set username.
@@ -343,15 +355,15 @@ class UserWrapper implements UserInterface
            case $this->userData instanceof UnicaenLdapPeople:
            case $this->userData instanceof UnicaenAppPeople:
                return $this->userData->getMail();
                break;

            case $this->userData instanceof Utilisateur:
            case $this->userData instanceof ShibUser:
                return $this->userData->getEmail();
                break;
        }

            default:
                throw new LogicException("Cas imprévu!");
        }
    }

    /**
     * Set email.
@@ -374,15 +386,15 @@ class UserWrapper implements UserInterface
            case $this->userData instanceof UnicaenLdapPeople:
            case $this->userData instanceof UnicaenAppPeople:
                return $this->userData->getNomComplet(true);
                break;

            case $this->userData instanceof Utilisateur:
            case $this->userData instanceof ShibUser:
                return $this->userData->getDisplayName();
                break;
        }

            default:
                throw new LogicException("Cas imprévu!");
        }
    }

    /**
     * Set displayName.
@@ -405,17 +417,17 @@ class UserWrapper implements UserInterface
            case $this->userData instanceof UnicaenLdapPeople:
            case $this->userData instanceof UnicaenAppPeople:
                return 'ldap';
                break;

            case $this->userData instanceof Utilisateur:
                return $this->userData->getPassword();
                break;

            case $this->userData instanceof ShibUser:
                return 'shib';
                break;
        }

            default:
                throw new LogicException("Cas imprévu!");
        }
    }

    /**
     * Set password.
@@ -440,16 +452,17 @@ class UserWrapper implements UserInterface
                $parts = ldap_explode_dn($this->userData->getDn(), 1);
                $isDeactivated = in_array('deactivated', $parts);
                return $isDeactivated ? 0 : 1;

            case $this->userData instanceof Utilisateur:
                return $this->userData->getState();
                break;

            case $this->userData instanceof ShibUser:
                return 1;
                break;
        }

            default:
                throw new LogicException("Cas imprévu!");
        }
    }

    /**
     * Set state.
+0 −33
Original line number Diff line number Diff line
@@ -10,7 +10,6 @@ use UnicaenApp\Exception\RuntimeException;
use UnicaenAuth\Authentication\Storage\ChainEvent as StorageChainEvent;
use UnicaenAuth\Entity\Shibboleth\ShibUser;
use UnicaenAuth\Event\UserAuthenticatedEvent;
use UnicaenLdap\Entity\People as UnicaenLdapPeople;
use Zend\Authentication\Exception\ExceptionInterface;

/**
@@ -18,38 +17,6 @@ use Zend\Authentication\Exception\ExceptionInterface;
 */
class UserWrapperFactory
{
    /**
     * Factory method.
     *
     * Instancie à partir d'une entité utilisateur.
     *
     * @param $userData UnicaenLdapPeople|UnicaenAppPeople|Utilisateur|ShibUser
     * @return UserWrapper
     */
    public function createInstanceFromUserData($userData)
    {
        if (
            !$userData instanceof UnicaenLdapPeople &&
            !$userData instanceof UnicaenAppPeople &&
            !$userData instanceof Utilisateur &&
            !$userData instanceof ShibUser
        ) {
            throw new DomainException("Type d'utilisateur spécifié invalide");
        }

        $inst = new UserWrapper();

        $individu = null;
        if ($userData instanceof Utilisateur) {
            $individu = $userData->getIndividu();
        }

        $inst->setUserData($userData);
        $inst->setIndividu($individu);

        return $inst;
    }

    /**
     * Factory method.
     *
+13 −9
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ use Application\Provider\Privilege\UtilisateurPrivileges;

/**
 * @var PhpRenderer $this
 * @var Individu $individu
 * @var Etablissement[] etablissements
 * @var EcoleDoctorale[] ecoles
 * @var UniteRecherche[] unites
@@ -21,7 +22,6 @@ $canModifier = $this->isAllowed(Privileges::getResourceId(UtilisateurPrivileges:

?>


<?php $this->headTitle($this->translate("Utilisateurs")) ?>

<h1 class="page-header"><?php echo $this->translate("Utilisateurs"); ?>
@@ -29,18 +29,25 @@ $canModifier = $this->isAllowed(Privileges::getResourceId(UtilisateurPrivileges:

<?php echo $this->messenger()->addMessagesFromFlashMessengerWithNoNamespace(); ?>

<form method='post' class="form-inline " style="margin-bottom:10px;">
<div class="row">
    <div class="col-md-3">
        <form method="post">
            <label for="individu">Recherche de l'individu :</label>
            <?php
            $sas = new SearchAndSelect('individu');
        $sas->setAttribute('placeholder','Recherchez un utilisateur');
        $sas->setAttribute('class', 'individu-finder');
            $sas->setAttribute('placeholder','Nom, prénom');
            $sas->setAttribute('class', 'form-control individu-finder');
            $sas->setAutocompleteSource($this->url('utilisateur/rechercher-individu', [], [], true));
            echo $this->formControlGroup($sas, 'formSearchAndSelect');
            ?>
    <input type="submit" class="" value="Sélection l'utilisateur"/>
            <input type="submit" id="select-individu-btn" class="btn btn-default" value="Sélection l'utilisateur"/>
        </form>
    </div>
</div>

<?php if ($individu) : ?>
    <hr>

    <div class="box panel panel-info">

        <div class="panel-heading">
@@ -53,10 +60,7 @@ $canModifier = $this->isAllowed(Privileges::getResourceId(UtilisateurPrivileges:
            <dl>
                <dt>État civil</dt>
                <dd>
                    <?php
                    /** @var Individu $individu */
                    echo $individu->getNomComplet(false, true, true);
                    ?>
                    <?php echo $individu->getNomComplet(false, true, true); ?>
                    <br/>
                    <?php echo $individu->getDateNaissanceToString(); ?>
                    <br/>