Commit 5e14d817 authored by David Surville's avatar David Surville
Browse files

[Evolution] Ajout des fonctions de renommage et de suppression d'une entité Ldap

parent 0aa94c78
...@@ -186,6 +186,20 @@ abstract class Entity ...@@ -186,6 +186,20 @@ abstract class Entity
return $this->getNode()->getDnString(); return $this->getNode()->getDnString();
} }
/**
* Retourne l'Organizational Unit (OU) de l'entité
*
* @return string
*/
public function getOu()
{
if ($result = $this->getNode()->getDn()->get(1)) {
return $result['ou'];
}
return null;
}
/** /**
* Retourne le nom de la clé primaire correspondant à l'entité * Retourne le nom de la clé primaire correspondant à l'entité
* *
...@@ -296,6 +310,9 @@ abstract class Entity ...@@ -296,6 +310,9 @@ abstract class Entity
/** /**
* Affecte une nouvelle valeur à un attribut * Affecte une nouvelle valeur à un attribut
* *
* This is an offline method.
* Node will be updated on calling update().
*
* @param string $attrName * @param string $attrName
* @param mixed $value * @param mixed $value
* @return self * @return self
...@@ -339,6 +356,9 @@ abstract class Entity ...@@ -339,6 +356,9 @@ abstract class Entity
* Ajoute une valeur à un attribut * Ajoute une valeur à un attribut
* Si l'attribut est monovalué, la valeur actuelle est remplacée par la nouvelle valeur * Si l'attribut est monovalué, la valeur actuelle est remplacée par la nouvelle valeur
* *
* This is an offline method.
* Node will be updated on calling update().
*
* @param string $attrName * @param string $attrName
* @param mixed $value * @param mixed $value
* @return self * @return self
...@@ -368,6 +388,9 @@ abstract class Entity ...@@ -368,6 +388,9 @@ abstract class Entity
/** /**
* Retire une valeur à un attribut * Retire une valeur à un attribut
* *
* This is an offline method.
* Node will be updated on calling update().
*
* @param string $attrName * @param string $attrName
* @param mixed|array $value * @param mixed|array $value
* @return self * @return self
...@@ -382,6 +405,9 @@ abstract class Entity ...@@ -382,6 +405,9 @@ abstract class Entity
/** /**
* Ajoute ou affecte une valeur à un attribut Ldap * Ajoute ou affecte une valeur à un attribut Ldap
* *
* This is an offline method.
* Node will be updated on calling update().
*
* @param string $attrName * @param string $attrName
* @param mixed $value * @param mixed $value
* @param bool $append * @param bool $append
...@@ -441,21 +467,54 @@ abstract class Entity ...@@ -441,21 +467,54 @@ abstract class Entity
} }
/** /**
* Mise à jour de l'entité * Déplacement de l'entité dans un autre OU (Organizational Unit)
* *
* @return self * This is an offline method.
* @throws LdapException * Node will be moved on calling update().
*
* @param string | Dn $newDn
* @throws \Zend\Ldap\Exception\LdapException
*/ */
public function update() public function move(string $newOu)
{ {
$this->getNode()->update(); $arrayOu = $this->getService()->getOu();
if(empty($arrayOu) || !in_array($newOu, $arrayOu)) {
throw new Exception(sprintf("L'entité ne peut être déplacée dans l'OU '%s'.", $newOu));
}
if($newOu == $this->getOu()) {
throw new Exception(sprintf("L'entité est déjà présente dans l'OU '%s'.", $newOu));
}
$newDn = sprintf('%s=%s,ou=%s,%s', $this->getKey(), $this->getId(), $newOu, $this->getNode()->getLdap()->getBaseDn());
$this->getNode()->move($newDn);
return $this; return $this;
} }
/**
* Renommage de l'entité
*
* This is an offline method. Node will be renamed on calling update().
*
* @param string | Dn $newDn
* @throws \Zend\Ldap\Exception\LdapException
*/
public function rename($newId)
{
$newDn = sprintf('%s=%s,ou=%s,%s', $this->getKey(), $newId, $this->getOu(), $this->getNode()->getLdap()->getBaseDn());
$this->getNode()->move($newDn);
}
/** /**
* Suppression de l'entité * Suppression de l'entité
* *
* This is an offline method.
* Node will be deleted on calling update().
*
* @return self * @return self
*/ */
public function delete() public function delete()
...@@ -465,6 +524,19 @@ abstract class Entity ...@@ -465,6 +524,19 @@ abstract class Entity
return $this; return $this;
} }
/**
* Mise à jour de l'entité
*
* @return self
* @throws LdapException
*/
public function update()
{
$this->getNode()->update();
return $this;
}
/** /**
* Attache une connexion * Attache une connexion
* *
......
...@@ -48,20 +48,6 @@ class People extends BasePeople ...@@ -48,20 +48,6 @@ class People extends BasePeople
return 'blocked' == $this->getOu(); return 'blocked' == $this->getOu();
} }
/**
* Retourne l'Organizational Unit (OU) de l'utilisateur
*
* @return string
*/
public function getOu()
{
if ($result = $this->getNode()->getDn()->get(1)) {
return $result['ou'];
}
return null;
}
/** /**
* Retourne le nom complet. * Retourne le nom complet.
* *
......
Markdown is supported
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