recharger les permissions utilisateur sans delog

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

  • [RÉGLÉ] recharger les permissions utilisateur sans delog

    Bonjour,


    J'ai besoin de pouvoir ajouter des usergroups à un user frontend en fonction de ses actions sur mon site. (typiquement il clique sur un bouton, qui l'ajoute à un groupe, ce qui lui permet d'accéder à du contenu supplémentaire.)

    Pour l'ajout, la suppression des groupes pas de problème (j'utilise JUserHelper:: addUserToGroup / removeUserFromGroup) ça marche nickel excepté une chose... L'utilisateur a besoin de se déconnecter et reconnecter pour que les changements soient pris en comptes.
    Je suppose que c'est un problème de contenu de session, mais je ne trouve pas comment la mettre à jour.

    (en cherchant je suis tombé sur ce vieux post : http://forum.joomla.org/viewtopic.php?p=2725238 mais rien de mieux).

    Si quelqu'un à une idée pour appliquer directement les changement je serais très intéressé !

    help

  • #2
    Re : recharger les permissions utilisateur sans delog

    J'ai trouvé une solution !

    Je poste donc ici au cas où ça puisse aider quelqu'un.

    En fait le problème ne vient pas de la session mais de l'objet utilisateur qui n'est pas mis à jour.
    Si quelqu'un sait comment forcer son refresh, la solution serait plus propre.

    En attendant voici ce que j'ai fait :
    modifier la classe user dans le framework joomla pour vérifier si les droits sont à jour:
    Code:
    libraries/joomla/user/user.php
    Code PHP:
        public function getAuthorisedViewLevels()
        {
            if (
    $this->_authLevels === null)
            {
                
    $this->_authLevels = array();
            }

            if (empty(
    $this->_authLevels)
    /*AJOUT*/            || $this->_authLevels != JAccess::getAuthorisedViewLevels($this->id//add by jesaril
                 
    )
            {
                
    $this->_authLevels JAccess::getAuthorisedViewLevels($this->id);
            }

            return 
    $this->_authLevels;
        } 
    ensuite après le
    Code PHP:
    JUserHelper::addUserToGroup 
    il suffit d'appeler la méthode.
    Code PHP:
    $user =& JFactory::getUser();
    $authGroups $user->getAuthorisedViewLevels();
    //echo "<br/>getAuthorisedViewLevels: ". print_r($authGroups,true)."<br/>"; 
    Il y a peut être moyen de faire plus propre, mais je n'ai pas mieux...

    Commentaire

    Annonce

    Réduire
    Aucune annonce pour le moment.

    Partenaire de l'association

    Réduire

    Hébergeur Web PlanetHoster
    Travaille ...
    X