API des ACL (Access Control List)
Sommaire
Fonction pour enregistrer les droits
Pour afficher un formulaire de droits ACL il faut inclure un fichier php :
global $babInstallPath; include_once $babInstallPath."admin/acl.php";
L'object macl (multiple access control list)
$macl = new macl('tg_value', 'idx_value', $id_object, 'returnvar', $bsetofgroups, $iddelegation);
$macl->addtable( 'bab_table_name',bab_translate("Who can manage this environement?"));
$macl->filter(0,0,1,1,1);
$macl->babecho();
l'object "macl" permet la création d'un fomulaire acl pour un seul object $id_object. Les paramètres 'tg_value' et 'idx_value' seront enregistrés dans le formulaire comme valeur pour les champs cachés tg et idx. La variable $_POST['returnvar'] sera déclarée lors du retour du formulaire.
Le paramètre $besetofgroups ( booléen ) permet d'afficher les ensembles de groupes ou non. Par défaut les ensembles de groupes sont affichés ( true ).
Le paramètre $iddelegation permet d'indiquer l'id de délégation à utiliser. Si la valeur est null, le système utilise l'id de la délégation courante.
la méthode addtable() permet d'ajouter une ou plusieurs tables de droits. La méthode doit être appelée une ou plusieurs fois. Le premier paramètre est le nom de la table, le deuxième paramètre est le libellé qui sera affiché sur le formulaire.
Voici un exemple de structure pour la table de droits :
CREATE TABLE `bdic_env_groups` ( `id` int(11) unsigned NOT NULL auto_increment, `id_object` int(11) unsigned NOT NULL default '0', `id_group` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `id_object` (`id_object`), KEY `id_group` (`id_group`) );
la méthode "filter" permet de désactiver certaines possibilités du formulaire de droit.
Ci dessous la liste des paramètres possible. Tous les paramètres sont optionnels. la valeur 1 permet de désactiver l'élément souhaité et la valeur 0 pour ne rien faire.
- permet de désactiver la liste des groupes
- fonctionnalité dépréciée (sans effet)
- permet de désactiver le groupe "Utilisateurs d'Ovidentia"
- permet de désactiver le groupe "Utilisateurs enregistrés"
- permet de désactiver le groupe "Utilisateurs anonymes"
- permet de désactiver un ou plusieurs groupes spécifiés par leur ID (le paramètre est un tableau)
la méthode "babecho()" permet d'afficher le formulaire.
la méthode "getHtml()" permet de récupérer le html du formulaire.
la méthode "set_hidden_field($sName, $sValue)" permet de définir des champs cachés supplémentaires.
Enregistrement du formulaire de droit
Pour enregistrer le résultat du formulaire de droit, appeler la fonction : maclGroups()
Enregistrer des droits par API
aclDuplicateRights($srcTable, $srcIdObject, $trgTable, $trgIdObject)
cette fonction permet de dupliquer un droit entre 2 objects
aclSetGroups_all($table, $id_object)
Pour donner accès à tous les utilisateurs d'ovidentia
aclSetGroups_registered($table, $id_object)
Pour donner accès aux utilisateurs enregistrés
aclSetGroups_unregistered($table, $id_object)
Pour donner accès aux utilisateurs anonymes
Fonctions pour tester les droits
bab_isAccessValid($table_name, $id_object);
la fonction renvoie true ou false si l'utilisateur a accès à l'objet testé
bab_getUserIdObject($table_name);
la fonction renvoie la liste des objets auquel l'utilisateur à accès sur cette table de droit sous forme d'un tableau
Liste des utilisateurs ayant accès à un droit
Il faut inclure le fichier php des ACL :
include_once $GLOBALS['babInstallPath']."admin/acl.php"; $users = aclGetAccessUsers($table, $id_object);
La fonction aclGetAccessUsers retourne un tableau contenant les utilisateurs qui disposent du droit passé par les paramètres. Le format de retour est un tableau structuré comme ceci :
array(
id_user => array(
'name' => 'user name',
'email' => 'user email or false'
)
)
Cette fonction est principalement utilisée pour des notifications par mail.
Gestion des tables de droits
Pour mettre a jour les tables de droits lors d'une suppression, il faut utiliser les fonctions suivantes :
aclDelete($table, $id_object)
Fonction à appeler lors de la suppression d'un objet
aclDeleteGroup($table, $id_group)
Fonction à appeler lors de la suppression d'un groupe