Commit 632ed88d authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

Meilleure information personnalisable lorsqu'on recherche une personne pour...

Meilleure information personnalisable lorsqu'on recherche une personne pour créer une nouvelle affectation
parent 32cdf3dd
......@@ -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é.
......
......@@ -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',
......
......@@ -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
......@@ -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
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment