web-dev-qa-db-fra.com

Plugin event uniquement lors de l'activation par email

Je fais simplement référence aux événements du plugin utilisateur Joomla dans l'URL https://docs.joomla.org/Plugin/Events/User/en

onUserLogin
onUserAuthenticate
onUserBeforeSave

Je me demandais simplement lequel me permettrait de faire quelque chose uniquement quand ils valideraient leur adresse électronique à partir du lien d'activation de la messagerie électronique.

Remarque: pendant l'activation de l'e-mail, je dois me connecter à un serveur SOAP), valider quelques éléments et lui permettre uniquement d'activer le compte.

8
Malaiselvan

vous pouvez le faire de la manière suivante: vous créez un plugin utilisateur (PAS de plug-in d'authentification, celui-ci est séparé), j'ai appelé le mien testwise "checkmail". Dans ce plugin, mettez le rappel onUserBeforeSave, dans lequel vous pouvez vérifier si le compte est activé de la manière suivante:

class PlgUserCheckmail extends JPlugin
{
    /**
    * Application object
    *
    * @var    JApplicationCms
    * @since  3.2
    */
    protected $app;

    /**
    * Database object
    *
    * @var    JDatabaseDriver
    * @since  3.2
    */
    protected $db;


    public function onUserBeforeSave($oldUser, $isNew, $newUser)
    {
        if(!$isNew)
        {
            if(isset($oldUser['activation']) &&
               !empty($oldUser['activation']) &&
               isset($newUser['activation']) &&
               empty($newUser['activation']))
            {
                // These commands in here are only triggered if the user is activating his account
            }
        }
    }
}

J'espère que cela aide =)

[edit]: Ah, j'ai failli oublier: Ce plugin va dans le répertoire plugins/user!

3
pixx