Gestion des groupes et droits d'accés

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

  • Gestion des groupes et droits d'accés

    Bonjour,

    Je suis actuellement en train de développer un projet (Joomla 1.6) pour un jeu en ligne et je galère sur un de mes composants avec le problème suivant :
    - Sur une page j'ai un mini-formulaire avec 2 champs qui permet à un joueur d'enregistrer son alliance en saisissant "le nom de l'alliance" et un "mot de passe". Lorsque le joueur clique sur "Valider", une ligne d'enregistrement est créée dans une table spécifique et par la même occasion j'effectue un changement automatique du groupe du joueur (Registered => Fondateur alliance). Mon problème c'est que malgré le changement de groupe, le joueur est obligé de se déconnecter et de se reconnecter à son compte pour pouvoir accéder aux nouvelles fonctionnalités accessibles via le menu principal.

    Comment faire pour réactualiser les menus et accéder aux nouvelles fonctionnalités sans devoir se reconnecter ?

    J'ai essayé la fonction setParam() de la classe Juser pour rafraichir ma session utilisateur mais çela ne change rien.

    Si quelqu'un à une piste ...
    En vous remerciant par avance,
    Cordialement.
    Dernière édition par CommanderTX à 05/07/2011, 08h23

  • #2
    Re : Gestion des groupes et droits d'accés

    Je suis sur une piste mais toujours bloqué
    En fait je me suis rendu compte que ça coince à cause de l'objet JUser qui ne se met pas à jour.
    Par exemple, j'ai remarqué que si je change l'adresse mail lié à mon profile utilisateur, via le formulaire "Mon compte", l'information est bien mise à jour dans la table jos_users mais si je fais un accès au paramètre "email" de l'objet JUser il garde l'ancienne valeur dans la session actuelle tant que je suis connecté.

    D'où ma question :
    - Est-ce un bug de la 1.6 ?
    - Y'a t'il une parade pour forcer la "mise à jour" des propriétés de l'objet JUser ?

    Pour accéder à l'objet user, je fais $user = JFactory::getUser();
    J'ai beau essayer de faire des $user->setParam() ou autre mais ça ne fonctionne pas.
    Dernière édition par CommanderTX à 30/06/2011, 22h21

    Commentaire


    • #3
      Re : Gestion des groupes et droits d'accés

      Je vous post ci-dessous le contenu de mon objet JUser :

      Code:
      JUser Object ( [isRoot:protected] => [id] => 52 [name] => utilisateur1 [username] => utilisateur1 [serveur] => 9 [pseudoInGame] => Warrior [player_id] => 465228 [alliance_id] => 2656 [visibleAlliance] => 1 [visibleMembre] => 1 [email] => toto@test.fr [password] => dd45878ec3c993ce4698b42d7101b966:C8MjN2Z9gF8J5jznmL6dNI04GB32MknI [password_clear] => [usertype] => [block] => 0 [sendEmail] => 0 [registerDate] => 2011-04-01 17:10:42 [lastvisitDate] => 2011-07-01 18:27:29 [activation] => 89d809f285c62c34a31474b52e812638 [params] => {"timezone":"Europe\/Paris","language":"fr-FR","admin_style":"","admin_language":"","editor":"","helpsite":""} [COLOR="#2e8b57"][B][groups] => Array ( [Fondateur] => 11 )[/B][/COLOR] [guest] => 0 [_params:protected] => JRegistry Object ( [data:protected] => stdClass Object ( [timezone] => Europe/Paris [language] => fr-FR [admin_style] => [admin_language] => [editor] => [helpsite] => ) ) [COLOR="red"][B][_authGroups:protected] => Array ( [0] => 1 [1] => 2 [2] => 12 ) [/B][/COLOR][_authLevels:protected] => Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 6 ) [_authActions:protected] => [_errorMsg:protected] => [_errors:protected] => Array ( ) [aid] => 0 )
      En fait j'ai réussi à modifier les données en "vert" de mon objet mais il faudrait que j'arrive à modifier la partie en "Rouge" ci-dessus (ie: [_authGroups : protected] => Array ( [0] => 1 [1] => 2 [2] => 12 ))mais je n'y arrive pas et vu qu'il y'a marqué "protected" je doute pouvoir y arriver à moins qu'il n'y ai une fonction que je ne connais pas ...

      Si quelqu'un à la solution ...
      Merci d'avance ...

      Commentaire


      • #4
        Re : Gestion des groupes et droits d'accés

        Bon ben j'ai trouvé la solution à mon problème, je pose ici l'astuce si ça peut servir à quelqu'un ...
        Mou soucis était que je n'arrivais pas à réactualiser l'affichage des menus et autres en fonctions des nouveaux droits attribués à un utilisateur sans que celui-ci soit obligé de se déconnecter et de se reconnecter à sa session.

        Solution :
        Etant donné que les nouveaux droits sont bien enregistrés dans la base mais pas rafraichit en temps réél dans l'objet JUser, il suffit de créer une fonction qui puisse modifier le paramètre _authGroups et _authLevels
        Ces variables sont protégées il m'a donc fallut modifier la classe JUser et rajouter 2 fonctions :
        public function loadAuthorisedViewLevels()
        {
        $this->_authLevels = JAccess::getAuthorisedViewLevels($this->id);
        }
        public function loadAuthorisedGroups()
        {
        $this->_authGroups = JAccess::getGroupsByUser($this->id);
        }
        Ces 2 fonctions font appel à getAuthorisedViewLevels() et getGroupsByUser() , qui récupèrent dans la base de données les droits d'accès et les groupes auquels appartient l'utilisateur puis affecte les résultat dans les paramètres de l'objet JUser.

        L'appel à ces 2 fonctions doit se faire dans votre code à chaque fois que vous faites un changement de groupe ou de droits d'accès du côté (Front office)
        Dernière édition par CommanderTX à 05/07/2011, 08h41

        Commentaire


        • #5
          Re : Gestion des groupes et droits d'accés

          Envoyé par feihcceo
          dans les paramètres de l'objet JUser.
          Oui, _authGroups et _authLevels sont 2 paramètres (attributs) protégés de la classe JUser.

          Commentaire

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X