plugin de login

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

  • plugin de login

    Bonjour,

    Je suis sous Joomla 3.1
    Je souhaites permettre aux utilisateurs de se loguer de deux manières:
    1. soit avec la manière traditionnelle(mail + pass)
    2. soit en utilisant l'identifiant(ex: 125465448995) d'une application smartphone + le même pass.


    Je rencontre un problème après avoir crée un nouveau plugin en me basant sur l'originale.
    Code PHP:
    defined('_JEXEC') or die;
    /**
     * Joomla Authentication plugin
     *
     * @package     Joomla.Plugin
     * @subpackage  Authentication.joomla
     * @since       1.5
     */
    class PlgAuthenticationPhone extends JPlugin
    {
        
    /**
         * This method should handle any authentication and report back to the subject
         *
         * @access    public
         * @param   array  Array holding the user credentials
         * @param   array  Array of extra options
         * @param   object    Authentication response object
         * @return  boolean
         * @since 1.5
         */
        
    public function onUserAuthenticate($credentials$options, &$response)
        {
            
    $response->type 'Joomla';
            
    // Joomla does not like blank passwords
            
    if (empty($credentials['password']))
            {
                
    $response->status JAuthentication::STATUS_FAILURE;
                
    $response->error_message JText::_('JGLOBAL_AUTH_EMPTY_PASS_NOT_ALLOWED');
                return 
    false;
            }

            if(
    is_numeric($credentials['username'])){
                
    $db1    JFactory::getDbo();
                
    $query1    $db1->getQuery(true)
                    ->
    select('email_address')
                    ->
    from('phone_db.subscriber')
                    ->
    where('username=' $db1->quote($credentials['username']));
        
                
    $db1->setQuery($query1);
                
    $result1 $db1->loadResult();
                
                if (
    $result1)
                {
                    
    $db    JFactory::getDbo();
                    
    $query    $db->getQuery(true)
                        ->
    select('id, password')
                        ->
    from('#__users')
                        ->
    where('username=' $db->quote($result1));
                    
    $db->setQuery($query);
                    
    $result $db->loadObject();
                }else{
                    
    $response->status JAuthentication::STATUS_FAILURE;
                    
    $response->error_message JText::_('JGLOBAL_AUTH_NO_USER');
                }
            }else{
                
    $db    JFactory::getDbo();
                
    $query    $db->getQuery(true)
                    ->
    select('id, password')
                    ->
    from('#__users')
                    ->
    where('username=' $db->quote($credentials['username']));
        
                
    $db->setQuery($query);
                
    $result $db->loadObject();
            }
            if (
    $result)
            {
                
    $parts    explode(':'$result->password);
                
    $crypt    $parts[0];
                
    $salt    = @$parts[1];
                
    $testcrypt JUserHelper::getCryptedPassword($credentials['password'], $salt);
                
                if (
    $crypt == $testcrypt)
                {
                    
    $user JUser::getInstance($result->id); // Bring this in line with the rest of the system
                    
    $response->email $user->email;
                    
    $response->fullname $user->name;
                    if (
    JFactory::getApplication()->isAdmin())
                    {
                        
    $response->language $user->getParam('admin_language');
                    }
                    else {
                        
    $response->language $user->getParam('language');
                    }
                    
    $response->status JAuthentication::STATUS_SUCCESS;
                    
    $response->error_message '';
                    
                    
    //print_r($response); die;
                
    } else {
                    
    $response->status JAuthentication::STATUS_FAILURE;
                    
    $response->error_message JText::_('JGLOBAL_AUTH_INVALID_PASS');
                }
            }
            else
            {
                
    $response->status JAuthentication::STATUS_FAILURE;
                
    $response->error_message JText::_('JGLOBAL_AUTH_NO_USER');
            }
        }

    Lorsque je me logue avec le mail et le pass, aucun problème, ça fonctionne.
    Par contre lorsque je me logue avec un identifiant smartphone et le pass, j'ai ce message magique:
    ERROR: This email is already registered

    Merci de votre aide.
    Maurice

  • #2
    Re : plugin de login

    pour info, lorsque je fais un print_r sur response, j'ai ces résultats:

    pour l'authentification par email:
    JAuthenticationResponse Object ( [status] => 1 [type] => Joomla [error_message] => [username] => [password] => [email] => etest@testmail.com [fullname] => Maurice Dutrente4 [birthdate] => [gender] => [postcode] => [country] => [language] => [timezone] => )
    pour l'authentification par ID smartphone:
    JAuthenticationResponse Object ( [status] => 1 [type] => Joomla [error_message] => [username] => [password] => [email] => etest@testmail.com [fullname] => Maurice Dutrente4 [birthdate] => [gender] => [postcode] => [country] => [language] => [timezone] => )

    Commentaire


    • #3
      Re : plugin de login

      Je suppose que j'ai dit une énormité pour que personne ne réponde

      Commentaire


      • #4
        Re : plugin de login

        Bonjour,

        Il doit y avoir un gag quelconque dans ce nouveau plugin. A priori, on ne trouve pas de champ spécifique pour cette clé smartphone, qui est stockée où entre l'envoi de la clé et sa confirmation ?

        Joomla! 3.2 a rajouté une authentification double facteur, qui serait nettement plus adaptée, sachant que 3.1 était une transition vers 3.2 => 3.5 LTS.
        Je ne pense pas que qui que ce soit ira développer un plugin 3.1 qui ne serait pas suivi sur 3.2, 3.5 et certainement rendu obsolète par les nouvelles options d'authentification en 3.2.
        Pas de demande de support par MP.
        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

        Commentaire


        • #5
          Re : plugin de login

          Bonjour, et merci pour votre réponse.

          J'ai moi même crée ce plugin en me basant sur celui déjà présent.
          Donc il n'y a pas de problème de compatibilité entre la 3.1 ou autre...

          la clé smartphone est inscrite dans le champ username de la table phone_db.subscriber.

          Commentaire


          • #6
            Re : plugin de login

            Regardes un peu le code http://www.dionysopoulos.me/blog/137...-for-devs.html puisque ton plugin vise à l'une des formes du 2 factor authentication.

            Ce plugin http://www.jpayplans.com/labs/two-fa...ntication.html en propose une version pour Joomla! < 3.2. Il suffit de l'adapter au smartphone code.
            Pas de demande de support par MP.
            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

            Commentaire


            • #7
              Re : plugin de login

              Merci pour votr eaide

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X