Droits pour accéder à la config et à l'admin d'un plugin

Bonjour,

J'ai écrit un petit plugin qui me permet d'ajouter des informations dans une div. Ces informations sont saisies dans la page config du plugin.

Je voudrais que seuls les admins et les gestionnaires puissent modifier ces infos.

J'ai donc créé une page admin.php dans mon plugin afin d'avoir le lien dans le menu de gauche du panneau général d'administration. Ce lien redirige automatiquement vers la page config
<?php if (!defined('PLX_ROOT')) exit;?>
<?php header('location:parametres_plugin.php?p='.urlencode('monPlug'));?>

Dans le fichier principal du plugin, dans la méthode __construct(), j'ai défini les droits pour les deux pages config et admin comme suit :
$this->setAdminProfil(PROFIL_ADMIN, PROFIL_MANAGER);
$this->setConfigProfil(PROFIL_ADMIN, PROFIL_MANAGER);

Le lien s'affiche bien dans le menu de gauche, que je sois connecté avec un compte admin ou avec un compte gestionnaire.

Par contre, je ne peux atteindre la page config qu'avec le compte admin.

Qu'est-ce que j'ai oublié ?

Merci pour votre aide.

Réponses

  • Jerry WhamJerry Wham Member
    janvier 2012 modifié
    Je suis un boulet. Il faut juste que je mettes le code de ma page config dans ma page admin.
    Sujet auto-résolu. :p

    PS : par contre, quand on a plusieurs liens d'affichés dans le menu admin via les pages admin.php de plusieurs plugins, si on clique sur un de ces liens, tous les liens affichés de cette façon ont la classe "active" et sont donc surlignés.

    Je ne sais pas si je suis très clair ???
  • StéphaneStéphane Member, Former PluXml Project Manager
    oui le probleme de classe active est corrigé. ça sera dispo dans la prochaie version 5.1.6

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Ok. Merci Stéphane.
  • je reviens sur ce sujet car je n'arrive pas à créer un panneau d'admin pour mes plugins.
    J'arrive très bien à faire un panneau de config, accessible via la gestion des plugins.
    Mais lorsque je crée un fichier admin.php avec le même contenu que config.php,
    que je déclare bien les droits dans le plugin, ça ne marche pas ...

    Faut-il laisser le fichier config ?
    Y a-t-il autre chose à faire ?
  • Mis à part vérifier que tu as bien le code suivant dans le constructeur de la classe :
    $this->setAdminProfil(PROFIL_ADMIN, PROFIL_MANAGER);
    
  • oui j'ai bien mes droits d'inscrits.

    si je n'ai pas de fichier config.php mais seulement admin.php,
    j'ai bien le lien dans le menu de gauche, qui mène bien à mon panneau de gestion.
    mais lorsque je clique sur "enregistrer" ça me note "accès interdit"

    je pense que lorsque le plugin enregistre les paramètres, il y a une redirection
    [== PHP ==]
    header('Location: parametres_plugin.php?p=pimpMyTemplate');
    

    qui doit être le fichier config.php ?
    du coup il faut aussi ce fichier ou une redirection ?
  • et en faisant une redirection du type:
    [== PHP ==]
    header('Location: plugin.php?p=pimpMyTemplate');
    
    ça me renvoie vers parametres_plugins.php avec un message d'alerte "accès interdit"
  • C'est que les paramètres sont modifiables dans la config et non dans l'admin. Donc quand tu enregistres un paramètre, tu es redirigé vers la config. Il faut que les droits soient attribués. Pour cela, ajoute dans le constructeur le code :
    $this->setConfigProfil(PROFIL_ADMIN, PROFIL_MANAGER);
    
    Ta page config devrait s'afficher.
  • mouarf ! je suis aussi un boulet ! :D :D :D
    j'avais oublié de mettre la cible du formulaire vers plugin.php?p=pimpMyTemplate !

    donc pour avoir un panneau d'administration d'un plugin,
    on procède comme pour un panneau de configuration sauf qu'il faut adapter les liens de redirection vers plugin.php?p=nom-du-plugin

    et on n'a pas besoin d'un fichier config ... sauf si on dit que config.php est accessible que par un certain profil et le panneau d'admin par un autre ;)
Connectez-vous ou Inscrivez-vous pour répondre.