Événement de plug-in uniquement lorsque l'activation par e-mail

8

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

onUserLogin
onUserAuthenticate
onUserBeforeSave

Vous vous demandez simplement lequel m'aidera à faire quelque chose uniquement lorsqu'ils valideront leur adresse e-mail à partir du lien d'activation par e-mail?

Remarque: Pendant la période d'activation par e-mail, je dois me connecter à un serveur SOAP et valider quelques éléments, puis ne lui permettre d'activer le compte.

Malaiselvan
la source

Réponses:

3

vous pouvez le faire de cette façon: vous créez un plugin utilisateur (PAS un plugin 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é comme ceci:

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 presque oublié: ce plugin va dans le répertoire plugins / user!

pixx
la source
Merci. Je vais essayer. Dois-je retourner false pour ne pas activer le membre en cas de refus?
Malaiselvan
Supprimé mon commentaire précédent que cela ne fonctionne pas - j'ai eu un bug stupide. Cela fonctionne, et cela fonctionne très bien. Merci pour le conseil. :)
Simba