gestions des droits plugins

bastienbastien Member

Bonjour,
J'expose mon soucis :
Quand je suis en mode "manager" et que je veux modifier un plugin pour enregistrer un changement, un message en rouge "accés interdit apparait.
En revanche, dans le mode "administrateur" cela fonctionne bien.
Dans mon plugin, j'ai le fichier php principal : - j'ai mis ceci dedans pour que le modérateur puisse y accéder : public function __construct($default_lang) {

    # Appel du constructeur de la classe plxPlugin (obligatoire)
    parent::__construct($default_lang);

    # Autorisation d'acces à la configuration du plugin
    $this->setConfigProfil(PROFIL_ADMIN, PROFIL_MANAGER);

    # Autorisation d'accès à l'administration du plugin
    $this->setAdminProfil(PROFIL_ADMIN, PROFIL_MANAGER);

Est-ce que quelqu'un peux m'indiquer ce que je doit rajouter sur pour que le profil manager puisse modifier le plugin en question. Merci de votre aide.

Réponses

  • Bonjour,
    A priori, ce que tu fait est bon amha.

    Est ce un plugin disponible en ligne que l'on pourrait tester?
    De quel version de pluXml s'agit-il ? Y-a t-il un autre plugin posant le même probléme ?

    Cdt

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

  • 5 nov. modifié

    Bonsoir,

    il semble que cela soit lié à un bug ou une erreur de PluXml dans plx.admin.php dans la fonction où du moins cela peut-être momentanément réglé en commentant le code a appliquée dans le else comparant le profil en session et le(s) profil(s) en argument de config du plugin:

                public function checkProfil($profil, $redirect=true) {
                    $args = func_get_args();
                    if($redirect===true or $redirect===false) $args=$args[0];
                    if($redirect) {
                        if(is_array($args)) {
                            if(!in_array($_SESSION['profil'], $args)) {
                                plxMsg::Error(L_NO_ENTRY);
                                header('Location: index.php');
                                exit;
                            }
                        } else {
                            if($_SESSION['profil']!=$profil) {
                            /*  plxMsg::Error(L_NO_ENTRY);
                                header('Location: index.php');
                                exit;*/
                            }
                        }
                    } else {
                        if(is_array($args))
                            return in_array($_SESSION['profil'], $args);
                        else
                            return $_SESSION['profil']==$profil;
                    }
                }
    

    @bazooka07 Peut tu regarder, est ce un bug/erreur déjà connu ?

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

  • bazooka07bazooka07 PluXml Project Manager

    @gcyrillus-nomade ,
    La ligne suivante me laisse perplexe :

    if($redirect===true or $redirect===false) $args=$args[0];
    

    Je ne comprends pas son intérêt.
    Je vais écrire un plugin basic pour faire un test.
    En commentant cette ligne, je pense que le test devrait passer.

  • bastienbastien Member

    Bonjour, de mon coté en mettant la ligne en commentaire, dans la sidebar on accède plus au plugin.
    Merci de votre persévérance.

  • bazooka07bazooka07 PluXml Project Manager

    Bonjour,
    la ligne dans ton plugin avec "$this->setConfigProfil(PROFIL_ADMIN, PROFIL_MANAGER);" ne sert à rien puisque le manager ne peut pas afficher les plugins dans le menu latéral gauche du back-office (cf ligne n°112 dans core/admin/top.php).
    Pour le "setAdminProfil", j'ai repris le plugin plxMySearch que j'ai modifié pour mettre les mêmes droits que ceux de ton plugin.
    Et il n'y a aucun bug.
    Pour avancer, il faut que tu nous donnes le code de ton plugin et la liste des plugins que tu as activé.
    J'essaierai ton plugin sur mon PC pour trouver une erreur éventuelle.

  • bastienbastien Member

    Codes envoyé en MP. Merci par avance

  • bazooka07bazooka07 PluXml Project Manager

    Il y a des trucs bizarres sur ton site.
    D'abord tu utilises PluXml v5.7. Merci de nous le préciser à l'avenir pour qu'on puisse parler de la même version de PluXml.
    Ensuite dans le dossier data/configuration, il manque des choses :

    • pas de dossier plugins
    • pas de fichiers parametres.xml, plugins.xml, statiques.xml, tags.xml et users.xml

    Il faut que je réinstalle PluXml version 5.7. pour vérifier certaines choses.

    Tu as modifié le code original de PluXml version 5.7 ?

  • bazooka07bazooka07 PluXml Project Manager

    la version 5.7 de PluXml utilise la fonction PHP "get_magic_quotes_gpc()".
    Cette fonction n'est plus disponible à partir de la version 5.0 de PHP :
    https://www.php.net/manual/fr/function.get-magic-quotes-gpc.php

  • @bazooka07 tu as probablement trouvé une archive de pluxml 5.7 neuve (avec le code commenté indiqué plus haut) avec le plugin que j'ai envoyé sur son ftp ... sauf que ce ftp ne correspond pas au site en ligne ni a un hébergement du même nom trouvé dans le ftp ... ou lié au certificat ..fenouil.. machin chose. J'ai donc laissé tomber mes investigation de ce coté faute de pouvoir faire cette install de la 5.7 avec son plugin. Je me suis contenté de la faire avec un 5.7 que j'avais déja sur mon serveur local (possible que je l'avai bidouillé car elle y est depuis un moment).

    Pour le plugin, je l'ai récupérer à partir du site en ligne via une page statique et un script pour en faire un zip. (file.zip qui doit encore trainé à la racine de son site de test/démo)

    Pour les infos (version php et PluXml) , il les avait laissé sur mon mur avec les identifiants, messages que j'ai effacé. J'aurais du les rapatriés ici.

    @bastien, pour le ftp, ce serait cool et moins cahotique que ce soit raccord avec le site que tu nous donne en lien

    Cdt

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

  • bazooka07bazooka07 PluXml Project Manager

    @gcyrillus-nomade ,
    J'ai installé depuis les versions de toutes les releases de PluXml qui sont sur Github.
    Mais j'ai préféré rapatrier sur mon PC l'intégralité du site de @bastien.
    Après avoir paramétré le serveur, j'ai affiché le site.
    A la première ouverture, PluXml m'a proposé une installation que j'ai validé.
    Le site s'affiche normalement. Ensuite activation du plugin et ajout d'un utilisateur "manageur". Et déconnexion et reconnexion avec le manageur.
    La page admin.php s'affiche normalement et fait sa sauvegarde sans broncher.
    On a peut-être pas toutes les cartes en main. J'ai vu qu'il était question du plugin multi-lingue de Stéphane.

    C'est quoi de créer un site tout neuf avec PluXml v5.7 ?
    Je comprends qu'un vieux site ronronne avec PluXml v5.7. Mais faire du neuf avec du vieux ....

  • 6 nov. modifié

    @bazooka07 , idem pour moi rapport a une version 5.7 pour du neuf. !?
    Bastien cherche peut-être seulement à ajouter un plugin sur un site qui tourne depuis un moment sans tout reprendre.

    Son bug sur la sauvegarde , c'est si quand il se logue en "gestionnaire" . il y a cette ligne if($redirect===true or $redirect===false) $args=$args[0]; puis if($_SESSION['profil']!=$profil) { . J'ai l'impression que l'on verifie qu'un string $_SESSION['profil'] n'est pas un array() $profile donc une condition dans un else toujours avec la même réponse si la précédente n'a pas matchée. J'ai du mal à saisir la logique de checkProfil($profil, $redirect=true) pour tout dire.

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

  • bastienbastien Member

    Bonsoir, vis à vis de la 5.7 , effectivement, n'arrivant pas à résoudre le soucis, je suis repartie avec une install de la même version, avec 0 plugin installé pour voir ce qu'il en était ...
    Merci à tous les deux pour votre implication

  • bastienbastien Member

    Bonsoir, j'ai installer la nouvelle version 5.8.9 et le soucis est le même.
    En mode gestionnaire, "erreur" et redirect vers l'index
    merci par avance

  • 7 nov. modifié

    Okay, et que donne la mise en commentaire proposée plus haut dans ce fil pour toi ?
    Note que c'est probablement un pansement temporaire, même si il semble fonctionner et que je n'ai pas débusqué d'effets de bords indésirable ou défauts de sécurités.

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

  • bastienbastien Member

    gcyrillus-nomade à trouver le soucis, il s'agissait bien du plugin, le core est donc pas remis en cause. Quel pro !!! Merci beaucoup de la persévérance !

  • 8 nov. modifié

    Ah oui, je dois préciser, pour clôturer le sujet et pour le prochain qui rencontrera un soucis similaire, qu'il s'agissait tout simplement des deux pages du plugin qui servent pour la configuration et pour l'administration .

    Ces deux pages ont pour ce plugin les même fonctionnalités mais ne sont pas prévues pour recevoir la soumission et traité un formulaire de l'autre (sur le fond ces deux pages ont deux usages complémentaire, mais pas similaire configuration et administration).

    Chacune de ces pages doivent se voir redirigée vers elle même.
    admin vers admin chargée à partir de plugin.php .
    * header("Location: plugin.php?p=nom_du_plugin"); pour l'enregistrement des paramètres
    * <form action="plugin.php?p=nom_du_plugin" method="post"> pour la soumission du formulaire

    config vers config chargée à partir de parametres_plugin.php
    * header("Location: parametres_plugin.php?p=nom_du_plugin"); pour l'enregistrement des paramètres
    * <form action="parametres_plugin.php?p=nom_du_plugin" method="post">pour la soumission du formulaire

    Tout le reste du code peut-être similaire dans les deux pages.

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

Connectez-vous ou Inscrivez-vous pour répondre.