web-dev-qa-db-fra.com

Plugin utilisateur surUserAfterLogin

J'écris un plug-in utilisateur personnalisé pour écrire l'ID de session et l'ID d'utilisateur sur un fichier txt (celui-ci sera utilisé pour certains de mes systèmes Perl) après la connexion de l'utilisateur à Joomla. Jusqu'à présent, j'ai réussi à créer un fichier XML et le fichier php principal.

defined('_JEXEC');
jimport('joomla.plugin.plugin');

echo "hello"; //this works as when I login I can see the message on top of the message which makes me believe that the user plugin is installed correctly

// Whatever I try to print in the class, it seems to ignore.
class PlgUserperllogin extends JPlugin
{
    public function onUserAfterLogin($options)
    {
          $user = JFactory::getUser();
          $user_id = $user->get('username');
          $usertype = $user->get('usertype');
          $session = JFactory::getSession();
          $sessionid = $session->getId();
          //write to txt file
          //set cookie for the same
    }
}

Je ne suis pas sûr de ce qui manque. J'apprécierais vraiment toute aide sur ceci.

2
Teju Desai

Le nom de classe est sensible à la casse avec Joomla, alors assurez-vous que le nom de votre plugin est correct. Par exemple, si le chemin du plugin est:

plugins/utilisateur/quelque chose/quelque chose.php

alors vous utiliseriez:

class PlgUserSomething extends JPlugin

Vous devez également savoir que usertype est obsolète. Si vous souhaitez obtenir le groupe [s] d'un utilisateur, regardez une autre réponse que j'ai écrite:

https://stackoverflow.com/a/18407692/1362108


Donc, pour le code du plugin actuel, essayez ce qui suit:

XML:

<?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="user" method="upgrade">
    <name>Something</name>
    <author>My Name</author>
    <creationDate>27-01-2017</creationDate>
    <copyright>Copyright (C) 2017</copyright> 
    <license>http://www.gnu.org/licenses/gpl-3.0.html</license> 
    <version>1.0.0</version>
    <description>Something</description>
    <files>
        <filename plugin="something">something.php</filename>
    </files>
</extension>

PHP:

defined('_JEXEC');

class PlgUserSomething extends JPlugin
{
    public function onUserAfterLogin($options)
    {
          // User data
          $user_id = $options['user']->id;
          $groups  = $options['user']->groups;

          $allGroups = '';
          foreach($groups as $group)
          {
              $allGroups .= 'Group Id = ' . $group . ' ';
          }

          // Session data
          $session = JFactory::getSession();
          $sessionid = $session->getId();

          JFactory::getApplication()->enqueueMessage('The user ID is: ' . $user_id);
          JFactory::getApplication()->enqueueMessage('The session ID is: ' . $sessionid);

          // $allGroups is a string containing all the groups
          // Write to txt file
          // Set cookie for the same
    }
}

Bien sûr changer PlgUserSomething à la bonne valeur pour vous.

2
Lodder