Composant personnalisé et droits d'accès

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Composant personnalisé et droits d'accès

    Bonjour,

    Je bute sur un problème (que je pense pouvoir résoudre à ma sauce) mais je voulais savoir s'il existait une fonction Joomla dans une classe spécifique qui vérifie si un utilisateur est autorisé ou non à afficher le contenu de la page.

    Problème :
    J'ai créé un composant 'com_import', composant qui permet de télécharger des fichiers csv dans un répertoire du site, puis de les charger dans des tables liées au composant.
    Ce composant est accessible via un menu front-end uniquement par les utilisateurs du groupe "Administrateur", les autres utilisateurs ne voient pas le lien qui permet d'accéder aux fonctionnalités de ce composants.

    Cependant si je me déconnecte et que j'essai d'accéder à mon composant en tapant :
    index.php?option=com_import&view=status, j'accède à mon composant alors que je suis un visteur !!!

    Quelqu'un a déjà eu ce soucis ?
    Merci d'avance pour vous réponses,
    je continue de chercher ...

    Cordialement.
    Dernière édition par CommanderTX à 15/07/2011, 17h34

  • #2
    Re : Composant personnalisé et droits d'accès

    Bonjour,

    Regardes l'API de la classe JUser, la méthode authorize est certainement la réponse
    Pas de demande de support par MP.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

    Commentaire


    • #3
      Re : Composant personnalisé et droits d'accès

      J'ai trouvé la solution à mon problème :

      Dans le model import.php j'ai créé une fonction isAuthorised().
      La procédure récupère le niveau d'accès défini pour le lien de menu auquel on essai d'accéder puis vérifie si l'utilisateur à le niveau requis pour afficher le contenu de la page.
      function isAuthorised($itemId){

      // Instanciation d'un objet Query.
      $db = &JFactory::getDBO();
      $user= JFactory::getUser();
      $sql = "SELECT access FROM gre_menu WHERE id ='".$itemId."'";
      $db->setQuery($sql);
      $authLevel = $db->LoadResult();

      // Si l'utilisateur a le niveau d'accès requis on renvoie vrai, sinon faux.
      $authorisedViewLevels = $user->getAuthorisedViewLevels();
      if (in_array($authLevel, $authorisedViewLevels) == false){
      return false;
      }

      return true;

      }
      Dans mon controller.php j'ajoute le bout de code en vert avant de faire le $view->display :

      class ImportController extends JController
      {

      function status()
      {

      // Verification des droits d'accés au module.
      $itemId = JRequest::getVar('Itemid');
      $model = $this->getModel();
      if ($model->isAuthorised($itemId) == false){
      JError::raiseWarning(403, JText::_('JERROR_ALERTNOAUTHOR'));return;
      }


      // Si tout est OK on continue ...
      ...
      ...

      // Affichage de la vue.
      $view->assignRef('document', $document);
      $view->display();

      }

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X