Fork me on GitHub




« 1 2 3 (4)


Re: limiter les droits dans l'édition des utilisateurs
Régulier
Inscrit: 14/06/2004 13:20
Messages: 374
Citation :
PS : C'est marrant baron et garrath vous avez le même nombre de post


Oui mais pas le même niveau en php

Citation :
Faut que tu trouve ou est généré le select ou le multi-select pour le choix des groupes et que tu ajoute cette condition


Ce pourrait-il que ce soit dans modules/system/admin/users/userform.php

ICI :
// Groups administration addition XOOPS 2.0.9: Mith
global $xoopsUser;
$gperm_handler =& xoops_gethandler('groupperm');
//If user has admin rights on groups
if ($gperm_handler->checkRight("system_admin"XOOPS_SYSTEM_GROUP$xoopsUser->getGroups(), 1)) {
    
//add group selection
    
$group_select = new XoopsFormSelectGroup(_US_GROUPS'groups'false$groups5true);
}
else {
    
//add empty variable
    
$group_select = new XoopsFormHidden('groups[]'XOOPS_GROUP_USERS);
}


J'avais déjà regardé mais je ne savais pas trop comment formuler la condition. D'ailleurs maintenant ...

Posté le : 01/11/2007 00:33

Baronxoops d'accord, mais loin d'être le roi
Partager Twitter Partagez cette article sur GG+
Re: limiter les droits dans l'édition des utilisateurs
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
le code que tu cites la affiche la selection des groupes si tu as les droits d'admin, donc deja il faut effectivement modifier le code la.
global $xoopsUser;
$gperm_handler =& xoops_gethandler('groupperm');
//If user has admin rights on groups
if ($gperm_handler->checkRight("system_admin"XOOPS_SYSTEM_GROUP$xoopsUser->getGroups(), 1)) {
    
//add group selection
    
$group_select = new XoopsFormSelectGroup(_US_GROUPS'groups'false$groups5true);
}
else {
    
//add empty variable
    
$group_select = new XoopsFormHidden('groups[]'XOOPS_GROUP_USERS);
}


deviendrait uniquement :
$group_select = new XoopsFormSelectGroup(_US_GROUPS'groups'false$groups5true);


Comme cela apparait la liste de modification des groupes en bas de la page d'edition des users.

Maintenant par contre dans cette liste apparait aussi le groupe webmestre.

La tu as plusieurs choix, soit creer une classe specifique pour l'affichage des groupes (et donc ne pas utiliser XoopsFormSelecGroup) soit modifier cette classe XoopsFormSelectGroup pour qu'elle ne donne pas le groupe webmestre.

Creer une nouvelle classe serait peut etre plus propre mais il faudrait aller modifier d'autre fichier pour la prendre en compte (c'est pas glop un petit probleme qu'il va bien faloir regler un jour ou l'autre sur la gestionde xoopsform)

Donc on va modifier la classe XoopsFormSelectGroup (sous class/xoopsform/formselectgroup.php) .

A la base elle est assez simple :
class XoopsFormSelectGroup extends XoopsFormSelect
{
    
/**
     * Constructor
     * 
     * @param    string    $caption    
     * @param    string    $name
     * @param    bool    $include_anon    Include group "anonymous"?
     * @param    mixed    $value            Pre-selected value (or array of them).
     * @param    int        $size            Number or rows. "1" makes a drop-down-list.
     * @param    bool    $multiple       Allow multiple selections?
     */
    
function XoopsFormSelectGroup($caption$name$include_anon=false$value=null$size=1$multiple=false)
    {
        
$this->XoopsFormSelect($caption$name$value$size$multiple);
        
$member_handler =& xoops_gethandler('member');
        if (!
$include_anon) {
            
$this->addOptionArray($member_handler->getGroupList(new Criteria('groupid'XOOPS_GROUP_ANONYMOUS'!=')));
        } else {
            
$this->addOptionArray($member_handler->getGroupList());
        }
    }
}

Elle herite de la classe XoopsFormSelect.
Elle fait juste un test pour savoir si elle doit afficher le group anonyme ou pas en fonction d'un boolean.

Il va falloir lui rajouter un test pour savoir si l'utilisateur est un admin ou pas et en fonction de cela lui rajouter une condition (criteria) supplementaire.

Pour savoir si c'est un admin ou pas on avait le code tout a l'heure :
global $xoopsUser;
$gperm_handler =& xoops_gethandler('groupperm');
//If user has admin rights on groups
if ($gperm_handler->checkRight("system_admin"XOOPS_SYSTEM_GROUP$xoopsUser->getGroups(), 1))...


Donc il va juste falloir le reprendre.

Ensuite par contre pour rajouter une condition supplementaire si on en a besoin il va falloir rajouter un criteria ... et si en plus on a besoin du critere sur le group anonyme on aura besoin d'un criteria_compo

Le criteria pour le groupe admin
$criteria_admin = new Criteria('groupid'XOOPS_GROUP_ADMIN'!=');

cela generera groupid != 1.

La ou ca se complique c'est si on a besoin aussi du test sur le groupe anonyme car la on sera oblige de passer par un criteria_compo avant
$criteria = new CriteriaCompo(new Criteria('groupid'XOOPS_GROUP_ANONYMOUS'!='));
                
$criteria->add($criteria_admin);


Voila on doit tout avoir donc le code du coup deviendrait cela (attention j'ai pas teste)
class XoopsFormSelectGroup extends XoopsFormSelect
{
    
/**
     * Constructor
     * 
     * @param    string    $caption    
     * @param    string    $name
     * @param    bool    $include_anon    Include group "anonymous"?
     * @param    mixed    $value            Pre-selected value (or array of them).
     * @param    int        $size            Number or rows. "1" makes a drop-down-list.
     * @param    bool    $multiple       Allow multiple selections?
     */
    
function XoopsFormSelectGroup($caption$name$include_anon=false$value=null$size=1$multiple=false)
    {
        global 
$xoopsUser;
        
$this->XoopsFormSelect($caption$name$value$size$multiple);
        
$member_handler =& xoops_gethandler('member');
        

        
$gperm_handler =& xoops_gethandler('groupperm');
        
        
$criteria_admin null;
        
$criteria null;
        
        
//If user has admin rights on groups
        
if ($gperm_handler->checkRight("system_admin"XOOPS_SYSTEM_GROUP$xoopsUser->getGroups(), 1)) {
            
$criteria_admin null;
        }
        else {
            
$criteria_admin = new Criteria('groupid'XOOPS_GROUP_ADMIN'!=');
        }
        
        if (
is_null($criteria_admin)){
            if (!
$include_anon) {
                
$criteria = new Criteria('groupid'XOOPS_GROUP_ANONYMOUS'!=');
            }         
        }
        else {
            if (!
$include_anon) {
                
$criteria = new CriteriaCompo(new Criteria('groupid'XOOPS_GROUP_ANONYMOUS'!='));
                
$criteria->add($criteria_admin);                
        }                
        
        
$this->addOptionArray($member_handler->getGroupList($criteria));
        
    }
}


et tu dois pas etre loin d'avoir ce que tu veux la (aux erreurs de compilation pret)

Posté le : 01/11/2007 11:03
Partager Twitter Partagez cette article sur GG+
Re: limiter les droits dans l'édition des utilisateurs
Régulier
Inscrit: 14/06/2004 13:20
Messages: 374
Salut,

on touche au but .

Merci garrath, juste une erreur d'accolade à la fin qui manque, sinon c'est exactement cela que je voulais.

Par contre, de cette manière, le véritable admin n'a plus de choix de groupe lors de l'édition des users. L'aire des groupes en bas est vide. Je suppose que cela doit être une condition modifier et j'ai regardé mais ... c'est limite du martien pour moi

A +

Posté le : 04/11/2007 15:23

Baronxoops d'accord, mais loin d'être le roi
Partager Twitter Partagez cette article sur GG+
Re: limiter les droits dans l'édition des utilisateurs
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
hum cela vient certainement de } qui manquait. A mon avis tu as pas du la mettre au bon endroit.

Essayes ca :
class XoopsFormSelectGroup extends XoopsFormSelect
{
    
/**
     * Constructor
     * 
     * @param    string    $caption    
     * @param    string    $name
     * @param    bool    $include_anon    Include group "anonymous"?
     * @param    mixed    $value            Pre-selected value (or array of them).
     * @param    int        $size            Number or rows. "1" makes a drop-down-list.
     * @param    bool    $multiple       Allow multiple selections?
     */
    
function XoopsFormSelectGroup($caption$name$include_anon=false$value=null$size=1$multiple=false)
    {
        global 
$xoopsUser;
        
$this->XoopsFormSelect($caption$name$value$size$multiple);
        
$member_handler =& xoops_gethandler('member');
        

        
$gperm_handler =& xoops_gethandler('groupperm');
        
        
$criteria_admin null;
        
$criteria null;
        
        
//If user has admin rights on groups
        
if ($gperm_handler->checkRight('system_admin'XOOPS_SYSTEM_GROUP$xoopsUser->getGroups(), 1)) {
            
$criteria_admin null;
        }
        else {
            
$criteria_admin = new Criteria('groupid'XOOPS_GROUP_ADMIN'!=');
        }
        
        if (
is_null($criteria_admin)){
            if (!
$include_anon) {
                
$criteria = new Criteria('groupid'XOOPS_GROUP_ANONYMOUS'!=');
            }         
        }
        else {
            if (!
$include_anon) {
                
$criteria = new CriteriaCompo(new Criteria('groupid'XOOPS_GROUP_ANONYMOUS'!='));
                
$criteria->add($criteria_admin);
            }                
        }                
        
        
$this->addOptionArray($member_handler->getGroupList($criteria));
        
    }
}

Posté le : 04/11/2007 17:23
Partager Twitter Partagez cette article sur GG+
Re: limiter les droits dans l'édition des utilisateurs
Régulier
Inscrit: 14/06/2004 13:20
Messages: 374
YEESSSSSSSSSSSSSSSS !!!

Alors maintenant c'est parfait.

J'ai mis le post a résolu et je vous remercie grandement.
Je n'ai pas encore tout compris malgré le soin que vous avez pris à commenter la marche à suivre. Je regarderai cela tranquillement plus tard.

Cette solution sera utile aux webmasters qui délèguent l'inscription des users à des collègues pas forcément au top en informatique, dans le cas aussi d'un intranet d'établissement ou encore d'un site d'association réservé aux adhérents, bref toutes les situations dans lesquelles l'inscription automatique ouverte à tous les internautes n'est pas souhaitable.

Une idée de module serait du côté admin de cocher quel groupe peut éditer quel(s) autre(s) groupe(s).

Je vais essayer de rédiger un article pour la FAQ en résumant ce post et bien sûr en citant les membres qui ont donné de leur temps et de leurs compétences pour faire aboutir ce hack.

Encore merci

Posté le : 04/11/2007 18:33

Baronxoops d'accord, mais loin d'être le roi
Partager Twitter Partagez cette article sur GG+
Re: limiter les droits dans l'édition des utilisateurs
Guest_
Bon ben c'est cool si tu as ce que tu veux c'est vrai que cette fonctionnalité sous webmestre c'est extrement intéressant j'espère que dans les futurs Xoops ça serra natif

PS : désolé de pas avoir pu y réfléchir j'avais beaucoup de boulot mais bon Garrath n'avais pas besoin d'aide :D

Posté le : 05/11/2007 12:58
Partager Twitter Partagez cette article sur GG+
Re: limiter les droits dans l'édition des utilisateurs
Supporter Xoops
Inscrit: 24/06/2006 05:39
Messages: 706
Bonjour,

Je n'ai malheureusement pas trouvé réponse à ma question dans ce post, j'ai peut-être été un peu vite, merci de me le spécifier si c'est le cas. Au niveau des groupes et des permissions, si j'enlève le droits à un utilisateur le droit de modifier la section bannière, modules et bloc par exemple. Lorsque l'utilisateur en question ira dans la section administrative, il verra quand même ses liens, mais s'il clique dessus, rien ne se passe, pour ça ok. Mais j'aimerais qui ne puisse pas voir les liens dont il ne peut pas se servir, qu'ils soient invisibles si on veut. Est-ce possible ??

Merci

Posté le : 17/11/2007 03:27

Hellboy
Partager Twitter Partagez cette article sur GG+
Re: limiter les droits dans l'édition des utilisateurs
Régulier
Inscrit: 14/06/2004 13:20
Messages: 374
Non effectivement, ce post traite d'un autre sujet.

Je suppose que ton problème sera résolu avec une restructuration des templates admin. Avec des conditions (if etc.).

A+

Posté le : 17/11/2007 09:47

Baronxoops d'accord, mais loin d'être le roi
Partager Twitter Partagez cette article sur GG+
Re: limiter les droits dans l'édition des utilisateurs
Supporter Xoops
Inscrit: 24/06/2006 05:39
Messages: 706
Bon, alors j'ai crée un nouveau post à ce sujet, j'aimerais que les gens qui peuvent m'aider à me donner une réponse à ce sujet clique ici pour pouvoir me la donner sur le post adéquat.

Merci

Posté le : 18/11/2007 22:32

Hellboy
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
« 1 2 3 (4)



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

132 Personne(s) en ligne (112 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 132 | Plus ...