diff --git a/CHANGELOG b/CHANGELOG index 5d97418e56de973ff102a34cdbd2ec4e1724b3a7..bacb1ce3ea69f0e0db453929c7664cec27c7f07c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,7 +3,16 @@ title: "Changements intervenus sur OSE" author: Laurent Lécluse - DSI - Unicaen ... -#OSE 7.0 (en développement) +#OSE 8.0 (en développement) + +## Corrections de bugs + +## Nouveautés + +## Notes de mise à jour + + +#OSE 7.0 (béta 2) ## Corrections de bugs @@ -22,6 +31,10 @@ Les composantes supprimées n'apparaissent maintenant plus dans la liste. Appara * Dans certains cas, le passage des heures du prévisionnel au réalisé ne fonctionnait pas. +* Les utilisateurs LDAP qui n'ont pas de SupannEmpId peuvent maintenant se connecter à OSE sans soucis + +* Lorsqu'un clique sur une composante dans le service référentiel, l'affichage du détail ne plante plus. + ## Nouveautés * Synchronisation possible de services et des volumes horaires associés (en vue d'import depuis ADE) @@ -61,6 +74,7 @@ Les composantes supprimées n'apparaissent maintenant plus dans la liste. Appara * adresse mail d'envoi, * icône de l'application, * URL des documentations permanents et vacataires dans les paramètres généraux. + * possibilité de préciser des informations lorsqu'un recherche une personne pour affectation à OSE ## Notes de mise à jour @@ -78,6 +92,8 @@ Les paramètres à ajouter puis personnaliser sont : | etablissement | contact | Personnalisation du contenu de votre page "contact" (code HTML) | | etablissement | icones | Personnaliser l'icône de l'application | | mail | from | préciser l'adresse d'expéditeur des mails de OSE | +| ldap | utilisateurExtraMasque | Masque de données à afficher lorsqu'on recherche une personne en vue de lui créer une affectation | +| ldap | utilisateurExtraAttributes | Attributs LDAP à fournir pour le masque ci-dessus | * Pour la génération des contrats de travail, veillez bien à installer Unoconv sur votre serveur. Pour plus d'informations, merci de vous rendre à la page "Procédure d'installation" où tout y est expliqué. diff --git a/config.local.php.default b/config.local.php.default index 2c39e80c19f21bdd4458a948f52c0e9461e6372c..097d72ecb3fee7de836c531396cce2ca1f228311 100644 --- a/config.local.php.default +++ b/config.local.php.default @@ -150,9 +150,20 @@ return [ * à rappchcher ensuite de intervenant.utilisateurCode pour faire la correspondance utilisateur => intervenant */ 'utilisateurCode' => 'supannEmpId', - /* Filtre pour la recherche d'utilisateurs */ + /* Filtre de recherche d'utilisateurs pour les affectations */ 'utilisateurFiltre' => '(eduPersonAffiliation=member)(!(eduPersonAffiliation=student))', + /* Masque de données permettant de préciser des informations lorsqu'on fait une recherche de personne en vue + * de créer une nouvelle affectation d'accès à OSE + * Format du masque : http://php.net/manual/fr/function.sprintf.php + */ + 'utilisateurExtraMasque' => '(n°%s; %s)', + + /* Liste des attributs LDAP à fournir au masque de données ci-dessus + * Dans l'exemple par défaut, on renvoie l'identifiant du personnel ainsi que son mail + */ + 'utilisateurExtraAttributes' => ['supannEmpId', 'mail'], + /* DN des utilisateurs */ 'utilisateursBaseDN' => 'ou=people,dc=unicaen,dc=fr', diff --git "a/data/D\303\251ploiement/Changements.pdf" "b/data/D\303\251ploiement/Changements.pdf" index 5b658693b918a2d35b761392ad0a86e14611ed46..52884f62bce983a722f0d013fd042f1284543896 100644 Binary files "a/data/D\303\251ploiement/Changements.pdf" and "b/data/D\303\251ploiement/Changements.pdf" differ diff --git "a/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" index b3ce60ba558acd3d6e29838f289c358abc3eab95..73915cf56283168e69920126873f89fe3f6bb5d3 100644 Binary files "a/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" and "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" differ diff --git "a/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" "b/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" index bf278c6527deebfe0a4fc00473b80eb53f7abced..904f3a2edd63494598f7411aa5fafd3f814b2abf 100644 Binary files "a/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" and "b/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" differ diff --git a/module/Application/src/Application/Connecteur/Factory/LdapConnecteurFactory.php b/module/Application/src/Application/Connecteur/Factory/LdapConnecteurFactory.php index d96a0e406ad6d5966ae75364479130859d56b22d..625809f50fea3c0b779abe8beeda4a930e7310d1 100755 --- a/module/Application/src/Application/Connecteur/Factory/LdapConnecteurFactory.php +++ b/module/Application/src/Application/Connecteur/Factory/LdapConnecteurFactory.php @@ -35,7 +35,6 @@ class LdapConnecteurFactory $mapperUser ); - $config = $container->get('Config'); if (isset($config['unicaen-app']['ldap']['utilisateur'])){ $configLdapUtilisateur = $config['unicaen-app']['ldap']['utilisateur']; @@ -55,6 +54,9 @@ class LdapConnecteurFactory $service->setUtilisateurCode( $configLdapUtilisateur['CODE'] ); } + $service->setUtilisateurExtraMasque(\AppConfig::get('ldap', 'utilisateurExtraMasque', '')); + $service->setUtilisateurExtraAttributes(\AppConfig::get('ldap', 'utilisateurExtraAttributes', [])); + return $service; } } \ No newline at end of file diff --git a/module/Application/src/Application/Connecteur/LdapConnecteur.php b/module/Application/src/Application/Connecteur/LdapConnecteur.php index 895f3448b103de01a0bee934a8f6804d396b2261..fb8280307c858f7668108181368b0262f897faf4 100755 --- a/module/Application/src/Application/Connecteur/LdapConnecteur.php +++ b/module/Application/src/Application/Connecteur/LdapConnecteur.php @@ -5,6 +5,7 @@ namespace Application\Connecteur; use Application\Entity\Db\Composante; use Application\Entity\Db\Utilisateur; use Application\Service\AbstractService; +use UnicaenApp\Entity\Ldap\AbstractEntity; use UnicaenApp\Entity\Ldap\People; use UnicaenAuth\Service\UserContext; use UnicaenApp\Mapper\Ldap\Structure as MapperStructure; @@ -54,6 +55,16 @@ class LdapConnecteur extends AbstractService */ private $utilisateurCode; + /** + * @var string + */ + private $utilisateurExtraMasque; + + /** + * @var array + */ + private $utilisateurExtraAttributes; + /** @@ -92,13 +103,12 @@ class LdapConnecteur extends AbstractService /* @var $foundUsers People[] */ foreach ($foundUsers as $ldapPeople) { - $id = $ldapPeople->getData(strtolower($this->getUtilisateurLogin())); + $id = $this->getPeopleAttribute($ldapPeople, $this->getUtilisateurLogin()); + $result[$id] = [ 'id' => $id, 'label' => $ldapPeople->getCn(), - 'extra' => " - " . implode(" - ", [ - current($ldapPeople->getAffectationsAdmin($this->mapperStructure, true)), - ]), + 'extra' => $this->getPeopleExtra($ldapPeople), ]; } } @@ -108,6 +118,36 @@ class LdapConnecteur extends AbstractService + private function getPeopleExtra(AbstractEntity $people) + { + $masque = $this->getUtilisateurExtraMasque(); + $attrs = $this->getUtilisateurExtraAttributes(); + + $attrsVals = []; + foreach( $attrs as $attr ){ + $attrsVals[$attr] = $this->getPeopleAttribute($people,$attr); + } + + return vsprintf($masque, $attrsVals); + } + + + + private function getPeopleAttribute( AbstractEntity $ldapPeople, string $attribute ) + { + try{ + $val = $ldapPeople->getData(strtolower($attribute) ); + if (is_array($val)) $val = implode(',',$val); + }catch(\Exception $e ){ + $val = null; + } + + return $val; + } + + + + /** * Enregistre un people dans la BDD et retourne l'enregistrement correspondant. S'il existe déjà alors il est simplement * retourné... @@ -163,11 +203,7 @@ class LdapConnecteur extends AbstractService $ldapUser = $this->serviceUserContext->getLdapUser(); if ($ldapUser){ - try { - return $ldapUser->getData(strtolower($this->getUtilisateurCode())); - }catch(\Exception $e){ - return null; - } + return $this->getPeopleAttribute($ldapUser,$this->getUtilisateurCode()); } return null; @@ -245,4 +281,52 @@ class LdapConnecteur extends AbstractService return $this; } + + + /** + * @return string + */ + public function getUtilisateurExtraMasque(): string + { + return $this->utilisateurExtraMasque; + } + + + + /** + * @param string $utilisateurExtraMasque + * + * @return LdapConnecteur + */ + public function setUtilisateurExtraMasque(string $utilisateurExtraMasque): LdapConnecteur + { + $this->utilisateurExtraMasque = $utilisateurExtraMasque; + + return $this; + } + + + + /** + * @return array + */ + public function getUtilisateurExtraAttributes(): array + { + return $this->utilisateurExtraAttributes; + } + + + + /** + * @param array $utilisateurExtraAttributes + * + * @return LdapConnecteur + */ + public function setUtilisateurExtraAttributes(array $utilisateurExtraAttributes): LdapConnecteur + { + $this->utilisateurExtraAttributes = $utilisateurExtraAttributes; + + return $this; + } + } \ No newline at end of file