Citation :
estacado a écrit:
c'est bien beau, mais c'est de la doc utilisateur cela. Pas de la doc developpeur. Cela ne m'apprend rien d'utile. Moi je veux savoir comment c'est gérer d'un point de vue php, avec les classes respectives, et vis à vis de la base de données mysql.
car cette doc là, m'apprend rien du tout... pour ce qui m'interresse, et j'ai déjà eu l'occasion d'y regarder rapidement, elle est trés incompléte!
En regle general, c-a-d a part pour des modules qui se le gere dans leur coin, les droits sont geres dans la table xxx_group_permission.
Pour la lecture de la table c'est assez simple...
gperm_id cle autoincremente donc aucun interet fonctionnel
gperm_groupid Id du groupe
gperm_itemid Id d'un item ca peut etre asez general, un block ou une fonction donnee
gperm_modid Id du module
gperm_name Nom de la permission, les permissions sont des geres par des chaines de caracteres donc c'est lie au module etc... tu peux tres bien mettre permission_de_lire dedans par exemple.
Cette table est gere du cote xoops par les objets XoopsGroupPerm et bien sur XoopsGroupPermHandler
Ensuite la manoeuvre d'une maniere simple c'est de tester si un utilisateur d'un groupe donnee a le droit a la permission qui se nomme (par exemple) permission_de_lire sur un module donnee et ensuite tu fais ce qu'il faut derriere.
exemple :
$module_handler =& xoops_gethandler('module');
$module =& $module_handler->getByDirname($modversion['dirname']);
if ($module) {
global $xoopsUser;
if (is_object($xoopsUser)) {
$groups = $xoopsUser->getGroups();
} else {
$groups = XOOPS_GROUP_ANONYMOUS;
}
$gperm_handler =& xoops_gethandler('groupperm');
if ($gperm_handler->checkRight("news_submit", 0, $groups, $module->getVar('mid'))) {
$cansubmit = 1;
}
}
Ca verifie que l'utilisateur fait partie d'un groupe qui a la permission "news_submit".
Voilà en gros l'utilisation des permissions de Xoops.