diff --git a/src/UnicaenZimbra/Entity/Right.php b/src/UnicaenZimbra/Entity/Right.php index c0db86efe8f7b034e4ba1703c4fa2430bf2e55e5..621acd8380eccf76c88fb606fbdd53d6d8060587 100644 --- a/src/UnicaenZimbra/Entity/Right.php +++ b/src/UnicaenZimbra/Entity/Right.php @@ -2,6 +2,7 @@ namespace UnicaenZimbra\Entity; +use SimpleXMLElement; use UnicaenZimbra\Entity\Entity as ZimbraEntity; use Application\Exception; @@ -45,6 +46,22 @@ class Right */ private $target; + /** + * id Zimbra de la cible + * utilisé lors de la récupération de la réponse du web services + * + * @var string + */ + private $targetId; + + /** + * nom de la cible + * utilisé lors de la récupération de la réponse du web services + * + * @var string + */ + private $targetName; + /** * type de la cible * @@ -62,12 +79,29 @@ class Right /** - * id Zimbra ou nom du bénéficiaire (requis pour : usr grp egp dom gst key email) + * id Zimbra ou nom du bénéficiaire + * requis pour : usr grp egp dom gst key email * * @var string */ private $grantee; + /** + * id Zimbra du bénéficiaire + * utilisé lors de la récupération de la réponse du web services + * + * @var string + */ + private $granteeId; + + /** + * nom du bénéficiaire + * utilisé lors de la récupération de la réponse du web services + * + * @var string + */ + private $granteeName; + /** * type du bénéficiaire * @@ -135,9 +169,13 @@ class Right */ private $publicFields = array( 'target', + 'targetId', + 'targetName', 'targetType', 'targetBy', - 'grantee', + 'grantee', + 'granteeId', + 'granteeName', 'granteeType', 'granteeBy', 'granteeSecret', @@ -257,6 +295,30 @@ class Right ); } + public function populate(SimpleXMLElement $object) + { + if($object->target->count() > 0) { + $attributes = $object->target->attributes(); + if(isset($attributes->type)) $this->targetType = $attributes->type; + if(isset($attributes->id)) $this->targetId = $attributes->id; + if(isset($attributes->name)) $this->targetName = $attributes->name; + } + if($object->grantee->count() > 0) { + $attributes = $object->grantee->attributes(); + if(isset($attributes->type)) $this->granteeType = $attributes->type; + if(isset($attributes->id)) $this->granteeId = $attributes->id; + if(isset($attributes->name)) $this->granteeName = $attributes->name; + } + if($object->right->count() > 0) { + $this->right = $object->right; + $attributes = $object->right->attributes(); + if(isset($attributes->deny)) $this->rightDeny = $attributes->deny; + if(isset($attributes->canDelegate)) $this->rightCanDelegate = $attributes->canDelegate; + if(isset($attributes->disinheritSubGroups)) $this->rightDisinheritSubGroups = $attributes->disinheritSubGroups; + if(isset($attributes->subDomain)) $this->rightSubDomain = $attributes->subDomain; + } + } + /** * L'entité transmise devient la cible du droit * diff --git a/src/UnicaenZimbra/Processus/BoiteGenerique.php b/src/UnicaenZimbra/Processus/BoiteGenerique.php index e05bb6e822077bead728e0d3209b3c40f2b978a4..ed07d10be13f7029cd498d314e320b730adf6397 100644 --- a/src/UnicaenZimbra/Processus/BoiteGenerique.php +++ b/src/UnicaenZimbra/Processus/BoiteGenerique.php @@ -23,7 +23,7 @@ class BoiteGenerique extends Processus { /** - * Création d'une boite générique + * Créer une boite générique * * @param string $mail Adresse mail de la boite générique * @param string $password Mot de passe de la boite @@ -46,6 +46,7 @@ class BoiteGenerique extends Processus } /** + * Renommer une boîte générique * * @param string $mail adresse mail de la boîte générique * @param string $newName nouveau nom @@ -59,7 +60,7 @@ class BoiteGenerique extends Processus } /** - * Destruction de la boite générique + * Supprimer une boite générique * * @param string $mail Adresse mail de la boite générique * @return self @@ -72,7 +73,7 @@ class BoiteGenerique extends Processus } /** - * Crée une adresse fonctionnelle par rapport à la boite générique (paramètre $mail) + * Créer une adresse fonctionnelle par rapport à la boite générique (paramètre $mail) * * @param string $mail Adresse mail de la boite générique * @param string $adresseFonctionnelle Adresse mail de l'adresse fonctionnelle @@ -123,7 +124,7 @@ class BoiteGenerique extends Processus } /** - * Renomme une adresse fonctionnelle + * Renommer une adresse fonctionnelle * * @param string $mail Adresse mail de la boite générique * @param string $adresseFonctionnelle adresse mail de l'adresse fonctionnelle @@ -174,7 +175,7 @@ class BoiteGenerique extends Processus } /** - * Supprime une adresse fonctionnelle par rapport à la boite générique (paramètre $mail) + * Supprimer une adresse fonctionnelle par rapport à la boite générique (paramètre $mail) * * @param string $mail Adresse mail de la boite générique * @param string $adresseFonctionnelle Adresse mail de l'adresse fonctionnelle @@ -207,9 +208,26 @@ class BoiteGenerique extends Processus return $this; } + + /** + * Retourner les droits sur une adresse fonctionnelle + * Permet notamment de récupérer les utilisateurs qui ont un accès à l'adresse fonctionnelle + * + * @param type $adresseFonctionnelle Adresse mail de l'adresse fonctionnelle + * @return Right[] + */ + public function getGrantsOfAdresseFonctionnelle( $adresseFonctionnelle ) + { + $distribListService = $this->getServiceManager()->get('zimbraServiceDistributionList'); + $rightService = $this->getServiceManager()->get('zimbraServiceRight'); + + $ace = new Right; + $ace->setTarget($distribListService->get($adresseFonctionnelle)); + return $rightService->getGrants($ace); + } /** - * Donne accès à une boite fonctionnelle pour un utilisateur + * Donner accès à une adresse fonctionnelle pour un utilisateur * * @param string $adresseFonctionnelle Adresse mail de l'adresse fonctionnelle * @param string $userMail Adresse mail de l'utilisateur @@ -287,7 +305,7 @@ class BoiteGenerique extends Processus } /** - * Retire l'accès à une boite fonctionnelle pour un utilisateur + * Retirer l'accès à une adresse fonctionnelle pour un utilisateur * * @param string $adresseFonctionnelle Adresse mail de l'adresse fonctionnelle * @param string $userMail Adresse mail de l'utilisateur @@ -336,6 +354,7 @@ class BoiteGenerique extends Processus } /** + * Renommer une adresse fonctionnelle pour un utilisateur * * @param string $adresseFonctionnelle adresse mail de l'adresse fonctionnelle * @param type $userMail adresse mail de l'utilisateur diff --git a/src/UnicaenZimbra/Service/Right.php b/src/UnicaenZimbra/Service/Right.php index 4074aaf0779503ff0560a4c326f5f1ff3a5f17d0..44c668bcc1209db567defed2e530973f1a696f2e 100644 --- a/src/UnicaenZimbra/Service/Right.php +++ b/src/UnicaenZimbra/Service/Right.php @@ -13,6 +13,28 @@ use UnicaenZimbra\Entity\Right as RightEntity; */ class Right extends Service { + /** + * Returns all grants on the specified target entry, or all grants granted + * to the specified grantee entry. + * + * @param \UnicaenZimbra\Entity\Right $right + * @return RightEntity[] + */ + public function getGrants(RightEntity $right) + { + $params = $right->getConvertedToXml(); + $response = $this->getZimbra()->request('GetGrantsRequest', array(), $params); + + $results = array(); + foreach ($response->children()->GetGrantsResponse->children() as $rightXml) { + $right = new RightEntity; + $right->populate($rightXml); + $results[] = $right; + } + $this->count = count($results); + return $results; + } + /** * Grant a right on a target to an individual or group grantee. *