detecter quand utilisateur change/ré-initilise son mots passe

Réduire
Ce sujet est fermé.
X
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • #31
    Re : detecter quand utilisateur change/ré-initilise son mots passe

    Sa marche mais je voudrais activer le code uniquement après que l'utilisateur ais validé la création de son compte avec le lien de envoyer dans l'email (pas avant).
    Ou mieux lors de sa première connexion, es ce possible ?

    Commentaire


    • #32
      Re : detecter quand utilisateur change/ré-initilise son mots passe

      Bonjour sazearte,

      après que l'utilisateur ais validé la création de son compte avec le lien de envoyer dans l'email (pas avant)
      Lors de la création ou de la modification d'un compte, il n'y a que lors de l'événement onUserBeforeSave que le mot de passe est disponible en clair. Ensuite il n'existe dans la base de données que sous la forme codée. Donc pour la réponse à l'email de validation qui vient plus tard cela ne marche pas.

      Ou mieux lors de sa première connexion, es ce possible ?
      Tu pourrais utiliser l'événement onUserAuthenticate qui comporte le mot de passe utilisé pour la connexion.

      Pour utiliser cet événement, il faut écrire un plugin d'authentification et vérifier à chaque connexion si l'utilisateur est déjà synchronisé et s'il s'est déjà connecté (date de dernière connexion). Un exemple qui pourrait être une bonne base est le plugin d'authentification de Joomla : plugins/authentication/joomla/joomla.php

      Le système d'authentification de Joomla passe en revue les différents plugins et sort de la boucle dès qu'il a trouvé une réponse de connexion réussie sans utiliser les plugins suivants. Donc il faudra ne pas oublier de les ordonner dans la gestion des plugins pour que le tien passe en premier.

      Ce serait bien sûr une mauvaise idée de modifier un fichier du core Joomla (problème des mises à jour). Je le mets juste pour que tu voies comment le système d'authentification gère ses plugins et leurs résultats : libraries/joomla/user/authentication.php fonction authenticate ligne 255.

      Je n'avais pas cité cette possibilité dans mes posts précédents parce que plus compliquée.

      Amicalement,
      Rajoz

      Commentaire


      • #33
        Re : detecter quand utilisateur change/ré-initilise son mots passe

        C'est bon, j'ai réussi.

        Maintenant je voudrais effectuer une opération lors de la suppression d'un membre.

        Je sais pas quel évenement prendre ? onUserBeforeDelete ou After ?

        Une fois le compte supprimé j'ai juste besoin de récupérer le nom d'utilisateur, j'ai donc crée la méthode suivante:

        public function onUserAfterDelete($user, $succes, $msg) {
        $nom= $user['username'];
        // etc....
        }

        Mais cela ne fonctionne pas, me suis-je trompé pour la récupération du nom après la suppression ?

        Commentaire


        • #34
          Re : detecter quand utilisateur change/ré-initilise son mots passe

          Bonsoir sazearte,

          C'est bon, j'ai réussi.
          Super !

          Maintenant je voudrais effectuer une opération lors de la suppression d'un membre.
          Je sais pas quel évenement prendre ? onUserBeforeDelete ou After ?
          onUserAfterDelete semble bien l'événement à utiliser, car avec onUserBeforeDelete on ne peut pas savoir si l'utilisateur a bien été supprimé puisque cela se passe "avant".
          Pour vérifier cet événement onUserAfterDelete, la méthode que j'ai ajoutée au plugin de test est :
          Code PHP:
          public function onUserAfterDelete($user$success$msg)
          {
              
          $app JFactory::getApplication();
              
          $app->enqueueMessage('----------');
              
          $text $success 'SUCCESS' 'FAILURE';
              
          $app->enqueueMessage('Result = ' $text);
              
          $app->enqueueMessage('UserId = ' $user['id']);
              
          $app->enqueueMessage('Name = ' $user['name']);
              
          $app->enqueueMessage('Username = ' $user['username']);
              
          $app->enqueueMessage('Email = ' $user['email']);
              
          $app->enqueueMessage('Password = ' $user['password']);
              
          $app->enqueueMessage('----------');
              
              return 
          true;

          En supprimant un utilisateur dans le backend, j'obtiens le message suivant :
          Message
          ----------
          Result = SUCCESS
          UserId = 35
          Name = R.Rajoz
          Username = Rajoz
          Email = xxx@xxx.com
          Password = xxxxxxxxxxxxxxxxxxxxxxxxxxxx
          ----------
          Utilisateur supprimé
          J'ai testé avec le code que tu indiques $nom = $user['username']; et cela fonctionne aussi, l'affichage de la variable $nom dans le message se fait correctement.

          Amicalement,
          Rajoz

          Commentaire


          • #35
            Re : detecter quand utilisateur change/ré-initilise son mots passe

            J'ai pas mis "return true;", dans la doc sa mets return none, j'ai compris qu'il ne fallait pas mettre de return ?

            Autre point, je supprime le compte depuis la partie admin, mais je ne pense pas que cela ai eu un impacte ?

            Merci pour ton aide, j'essaye et je redis.

            Commentaire


            • #36
              Re : detecter quand utilisateur change/ré-initilise son mots passe

              bizarre, chez moi sa ne marche pas, quand je supprime un utilisateur dans la partie admin, j'ai juste le message:

              Message
              Utilisateur supprimé

              Pourtant j'ai rajouté le même code que toi dans usersync.php après la fin de la fonction
              public function onUserBeforeSave

              Commentaire


              • #37
                Re : detecter quand utilisateur change/ré-initilise son mots passe

                Bonjour sazearte,

                J'ai pas mis "return true;", dans la doc sa mets return none, j'ai compris qu'il ne fallait pas mettre de return ?
                Dans la documentation https://docs.joomla.org/Plugin/Event...serAfterDelete il y a effectivement indiqué "Return Value none" ce qui indique que la valeur en retour n'est pas significative.

                Mais c'est une habitude dans les plugins d'avoir en retour un boolean donc de mettre "return true;" pour dire que le plugin a bien fonctionné (même si se n'est pas utilisé derrière).

                D'ailleurs, en pratique, Joomla! utilise pour onUserAfterDelete ce retour d'un boolean, voir plugins/user/joomla/joomla.php (lignes 50 à 64).

                bizarre, chez moi sa ne marche pas
                Je viens de vérifier le fonctionnement sur mes sites de test en J! 3.3.6 et 3.4.0.

                Difficile d'avoir un avis sur le fait que cela ne marche pas chez toi sans avoir pu regarder ni tester ce que tu as fait.

                Peux-tu mettre ton plugin en ligne en pièce jointe que je puisse essayer de t'aider ?

                Ce qui m'intéresse, c'est l'organisation du plugin avec la gestion des événements et leurs données. Si le traitement ultérieur des données des événements est confidentiel, tu peux bien sûr enlever tout le code correspondant.

                Amicalement,
                Rajoz

                Commentaire


                • #38
                  Re : detecter quand utilisateur change/ré-initilise son mots passe

                  Voila, pour tester j'ai exactement repris ton code:

                  Code:
                  <?php
                  /**
                   * @package     
                   * @subpackage  
                   *
                   * @copyright   Copyright (C) 2015 sazearte, Inc. All rights reserved.
                   * @license     GNU General Public License version 2 or later; see LICENSE.txt
                   */
                   
                  // no direct access
                  defined('_JEXEC') or die;
                  
                  /**
                   * UsersSync plugin
                   *
                   * @package     
                   * @subpackage  
                   * @since       
                   */
                   
                   class PlgUserUserssync extends JPlugin
                  {
                  	/**
                  	* Load the language file on instantiation. Note this is only available in Joomla 3.1 and higher.
                  	* If you want to support 3.0 series you must override the constructor
                  	*
                  	* @var    boolean
                  	* @since  3.1
                  	*/
                  	protected $autoloadLanguage = true;
                  
                  	/**
                  	* Method is called before user data is stored in the database
                  	*
                  	* @param	array	$oldUser	Holds the old user data.
                  	* @param	boolean	$isnew		True if a new user is stored.
                  	* @param	array	$newUser	Holds the new user data.
                  	*
                  	* @return   boolean
                  	*
                  	*/
                  
                  	
                  	
                  	
                  	
                  	public function onUserBeforeSave($oldUser, $isnew, $newUser)
                  	{
                  		// Message d'erreur pour tester le plugin
                  		$app = JFactory::getApplication();
                  
                  		if (!$isnew && $newUser['password_clear'] !== "")
                  		{
                  			// code à exécuter quand une modification de mot de passe va être enregistrée
                  
                  
                  		}
                  		
                  		if ($isnew) {
                  
                    // code à exécuter quand un compte est crée
                  		
                  		}
                  
                  		return true;    
                  	}
                  
                  	
                  	public function onUserAfterDelete($user, $success, $msg)
                  {
                      $app = JFactory::getApplication();
                      $app->enqueueMessage('----------');
                      $text = $success ? 'SUCCESS' : 'FAILURE';
                      $app->enqueueMessage('Result = ' . $text);
                      $app->enqueueMessage('UserId = ' . $user['id']);
                      $app->enqueueMessage('Name = ' . $user['name']);
                      $app->enqueueMessage('Username = ' . $user['username']);
                      $app->enqueueMessage('Email = ' . $user['email']);
                      $app->enqueueMessage('Password = ' . $user['password']);
                      $app->enqueueMessage('----------');
                      
                      return true;
                  }  
                  	 
                  }
                  la méthode onUserBeforeSave fonctionne très bien.

                  Commentaire


                  • #39
                    Re : detecter quand utilisateur change/ré-initilise son mots passe

                    Si c'est réglé merci de l'indiquer :
                    Lorsque l'on se cogne la tête contre un pot et que cela sonne creux, ça n'est pas forcément le pot qui est vide.
                    Confucius

                    Commentaire


                    • #40
                      Re : detecter quand utilisateur change/ré-initilise son mots passe

                      ce n'est pas reglé.

                      Commentaire


                      • #41
                        Re : detecter quand utilisateur change/ré-initilise son mots passe

                        @lesoutier : le problème initial du post est réglé mais sazearte a ajouté un nouveau problème qui reste à résoudre. Quand ce dernier problème sera réglé, je rappellerai à sazearte de l'indiquer.

                        Bonjour sazearte,

                        Voila, pour tester j'ai exactement repris ton code
                        J'ai testé avec succès ce code avec J!3.3.6 et J!3.4.0 dans trois environnements différents (local Win7 + Xampp, NAS Synology et 1&1 partagé).

                        Pour éviter les interférences avec d'autres essais antérieurs, je te suggère de ré-installer un nouvel environnement propre de test et de recommencer les tests :
                        • Joomla! 3.4.0 Fr
                        • plugin UsersSync v0.2 (ci-joint) : à installer et à activer
                        • tests en backend (administration) pour afficher les différents messages :
                          • créer un utilisateur
                          • modifier l'email de l'utilisateur
                          • modifier le mot de passe de l'utilisateur
                          • supprimer l'utilisateur

                        Amicalement,
                        Rajoz
                        Fichiers joints

                        Commentaire


                        • #42
                          Re : detecter quand utilisateur change/ré-initilise son mots passe

                          @Rajoz : Ok, c'est noté.
                          Lorsque l'on se cogne la tête contre un pot et que cela sonne creux, ça n'est pas forcément le pot qui est vide.
                          Confucius

                          Commentaire


                          • #43
                            Re : detecter quand utilisateur change/ré-initilise son mots passe

                            C'est bon j'ai trouvé l'erreur, il fallait juste purger.
                            Ca m'énerve de passer 3 jours pour au final s'apercevoir que le problème venait de la.


                            En tous cas merci pour ton aide, pour le coup effectivement mon code n'étais pas le problème.
                            Je mets le sujet en résolus.

                            Commentaire

                            Annonce

                            Réduire
                            Aucune annonce pour le moment.

                            Partenaire de l'association

                            Réduire

                            Hébergeur Web PlanetHoster
                            Travaille ...
                            X