13.6.3.5 Doc::hasPermission()
Cette méthode permet de vérifier que l'utilisateur courant possède un droit particulier sur le document.
13.6.3.5.1 Description
bool hasPermission ( string $aclName, bool $strict = false )
Cette méthode retourne true
, si l'utilisateur possède le droit indiqué. Ce
droit est indiqué dans le profil du document et peut être obtenu par
un rôle ou un groupe.
13.6.3.5.1.1 Avertissements
Aucun.
13.6.3.5.2 Liste des paramètres
- (string)
aclName
- Nom du droit a examiner.
- (bool)
strict
-
Indique s'il faut tenir compte de la suppléance :
- Si
false
(par défaut) : les droits des titulaires sont aussi pris en compte - Si
true
: les droits des titulaires ne sont pas pris en compte.
- Si
13.6.3.5.3 Valeur de retour
Retourne true
dans les cas suivants :
- si l'utilisateur possède le droit demandé,
- si l'utilisateur est "admin" (même si le droit n'existe pas).
Retourne false
dans les cas suivants :
- si l'utilisateur ne possède pas le droit demandé (hors "admin"),
- si le droit n'est pas un des droits du document (hors "admin").
13.6.3.5.4 Erreurs / Exceptions
Aucune.
13.6.3.5.5 Historique
Cette méthode n'est disponible que depuis la version 3.2.5.
La méthode Doc::control()
disponible dans les versions précédentes permet de
réaliser le même test de droit. À la différence de Doc::hasPermission()
, cette
dernière retourne un message d'erreur si le droit n'est pas obtenu sinon elle
retourne un message vide.
13.6.3.5.6 Exemples
13.6.3.5.6.1 Vérification du droit de modification
Le droit de modifier est le droit edit
.
require_once("FDL/Class.Doc.php"); $doc = new_doc("", "1420"); // document n°1420 if ($doc->isAlive()) { if ($doc->hasPermission('edit')) { printf('Utilisateur "%s" a le droit de modifier "%s"'."\n", getCurrentUser()->login, $doc->getTitle() ); } else { printf('Utilisateur "%s" n\'a pas le droit de modifier "%s"'."\n", getCurrentUser()->login, $doc->getTitle() ); } } else { printf("Document non trouvé\n"); }
Attention le droit edit
ne suffit pas forcément pour autoriser la
modification. Il peut être nécessaire de vérifier aussi le verrou
(propriété locked
).
13.6.3.5.6.2 Vérification de tous les droits
La liste des droits du documents est dans la propriété acls
de l'objet.
require_once("FDL/Class.Doc.php"); $doc = new_doc("", "1420"); if ($doc->isAlive()) { $acls = $doc->acls; printf('Utilisateur "%s" a les droits suivants pour "%s" :'."\n", getCurrentUser()->login, $doc->getTitle() ); foreach ($acls as $acl) { printf("Droit %-12s : %s\n", $acl, ($doc->hasPermission($acl))?"Oui":"Non" ); } } else { printf("Document non trouvé\n"); }
Résultat :
Utilisateur "zoo.garde" a les droits suivants pour "Théodor" : Droit view : Oui Droit edit : Non Droit delete : Non Droit send : Non Droit unlock : Non Droit confidential : Non Droit wask : Non
13.6.3.5.7 Notes
Les méthodes Doc::enableEditControl()
et
Doc::disableEditControl()
n'ont pas d'impact sur cette méthode.