diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..1c046bd0a9cbbffe3385b58dfc052ce63f48e5a2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,23 @@ +CHANGELOG +========= + +3.0.0 (01/10/2020) +------------------ + +- Adaptation du code pour le passage à ZF3. +- Scission des classes liées aux entités ("Generic", "Group", "People", "Root", "Structure" et "System") en deux classes : + - classe de base avec un setter pour (presque) chaque attribut Ldap + - classe qui hérite de la classe de base avec des fonctions spécifiques à l'entité +- Gestions des attributs "supannActivite", "ucbnSecteurDisciplinaire" et "supannEmpCorps" +- Ajout des getters pour les attributs de la classe "People" : "rid", "sambaSID", "uidNumber", "gidNumber", "loginShell" et "homeDirectory" +- Ajout des setters pour les différents attributs liés aux structures de la classe "People" +- Ajout des attributs cachés "createTimestamp" et "modifyTimestamp" comme DateTimeAttributes +- Ajout des setters pour les attributs de la classe "People" : "supannEtablissement", "supannEtuAnneeInscription", "supannEtuCursusAnnee", "supannEtuDiplome" et "supannEtuEtape" +- Ajout des setters pour les attributs de la classe "People" : "supannEtuInscription", "ucbnSiteLocalisation", "ucbnAnneePostBac", "ucbnCodeEtape", "ucbnEtuComplementInscription", +"ucbnPrivateAddress", "ucbnPrivateAddresseBis", "supannEtuElementPedagogique", "supannEtuRegimeInscription", "supannEtuSecteurDisciplinaire" +et "supannEtuTypeDiplome" +- Gestion de la modification de l'attribut "supannRefId" par étiquette +- Ajout de fonctions de vérification du statut d'une personne dans la classe "People" +- Fonction de récupération de champs date au format Php DateTime +- Mise en place d'une entité "Root" pour gérer la racine de l'annuaire Ldap et d'un service associé +- Ajout des setters pour les attributs de la classe "People" : "supannAutreMail" et "mailForwardingAddress" diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..0e6ea14691837d42ed7dca7ba7b2ca30c9940acd --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# UnicaenLdap + + * [Introduction](#introduction) + * [Installation](#installation) + * [Configuration](#configuration) + +## Introduction + +Ce module permet de se connecter à l'annuaire Ldap de l'université et de consulter/modifier ses données. + +## Pré-requis + +L'utilisation de ce module nécessite l'installation de l'extension `ext-ldap` de PHP. + +## Installation + +```bash +$ composer require unicaen/ldap +``` + +## Configuration + +> Récupérer les fichiers de config du module + +```bash +$ cp -n vendor/unicaen/zimbra/config/unicaen-ldap.local.php.dist config/autoload/unicaen-ldap.local.php +``` + +> Adapter le contenu à vos besoins en configurant notamment les paramètres de connexion au serveur Ldap. + +```php +'unicaen-ldap' => [ + 'host' => 'ldap-test.unicaen.fr', + 'port' => 389, + 'version' => 3, + 'baseDn' => "dc=unicaen,dc=fr", // racine de l'annuaire + 'bindRequiresDn' => true, + 'username' => "uid=xxxx,ou=system,dc=unicaen,dc=fr", + 'password' => "xxxx", + 'accountFilterFormat' => "(&(objectClass=supannPerson)(supannAliasLogin=%s))", +] +``` \ No newline at end of file diff --git a/src/UnicaenLdap/Entity/People.php b/src/UnicaenLdap/Entity/People.php index 9ac603e8c6f6b7308fa914ba8b3c52df1f6df448..2028027dc72aa7680954b6fe8b8e8faf738f1cfa 100644 --- a/src/UnicaenLdap/Entity/People.php +++ b/src/UnicaenLdap/Entity/People.php @@ -4,6 +4,7 @@ namespace UnicaenLdap\Entity; use DateTime; use UnicaenLdap\Entity\Base\People as BasePeople; +use UnicaenLdap\Entity\Group as GroupEntity; use UnicaenLdap\Entity\Structure as StructureEntity; use UnicaenLdap\Entity\System as SystemEntity; use UnicaenLdap\Exception; @@ -392,7 +393,7 @@ class People extends BasePeople /** * Retourne les structures auxquelles appartient la personne * - * @return StructureEntity[]|null + * @return StructureEntity|StructureEntity[]|null */ public function getStructure() { @@ -425,7 +426,7 @@ class People extends BasePeople /** * Retourne les structures recherche auxquelles appartient la personne * - * @return StructureEntity[]|null + * @return StructureEntity|StructureEntity[]|null */ public function getStructureRecherche() { @@ -689,6 +690,21 @@ class People extends BasePeople return 1 == count($value) ? array_shift($value) : $value; } + /** + * Retourne la liste des groupes dont l'utilisateur fait partie + * Si le groupe n'est plus valide à la date d'observation, alors il n'est pas retourné dans la liste + * + * @param DateTime $dateObservation + * @param string $orderBy Champ de tri (au besoin) + * @return GroupEntity[]|null + */ + public function getGroups(DateTime $dateObservation = null, $orderBy = null) + { + $groupService = $this->service->getLdapGroupService(); + + return $groupService->filterValids($groupService->getAllBy($this->get('memberOf'), 'dn', $orderBy), $dateObservation); + } + /** * Modifie l'ensemble des attributs liés au mot de passe *