login à partir de variables reçues

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

  • [RÉGLÉ] login à partir de variables reçues

    Bonjour, le titre n'est pas très clair mais je vais essayer de m'expliquer du mieux que possible.

    Je réalise actuellement un portail intranet pour une entreprise et je rame un peu sur la partie authentification des utilisateurs. L'entreprise demande à ce qu'ils n'aient pas à taper login et password et soient plutot connecté via leur système basé sur la lecture d'une carte agent.

    Je dois donc récupérer le login et password sur la carte de l'employé via un lecteur branché sur son ordinateur et utiliser ces valeurs pour le connecter au site. J'ai déjà réalisé cette partie qui fonctionne, le problème étant que je n'arrive pas ensuite à lancer l'authentification avec ces valeurs.

    Voici le code correspondant et mon explication qui suit :

    Code PHP:
    <?php
    //vérifie si l'utilisateur est déjà connecté
    $user =& JFactory::getUser();
    if (
    $user->guest
    {
        
    //vérifie l'existence du cookie et récupère le login et mot de passe dedans
        
    if (isset($_COOKIE['authent']))
        {
            
    $authent $_COOKIE['authent'];
            
    $auth explode(" "$authent);
            
    $un $auth[0];
            
    $pwd $auth[1];
        
            if(!empty(
    $un)&&!empty($pwd))
            {                
    //test qui affiche les valeurs pour vérifier qu'elles sont remplies
                    
    ?>
                    <script type="text/javascript">
                        alert("<?php echo $un.'   '.$pwd;?>");
                    </script>
                    <?php 
                    
                    
    //connexion de l'utilisateur
                    
    $credentials = array( 'username' => $un'password' => $pwd);
                    
    $login_site =& JFactory::getApplication('site');
                    
    $login_site->login($credentials$options=array());
                    
    ?>
                    <script type="text/javascript">
                        window.location.reload();    //recharge la page pour finaliser la connexion
                    </script>
                    <?php 
            
    }
            else
            {        
    //indique que les variables sont vides
                
    ?>
                    <script type="text/javascript">
                        alert("<?php echo 'Variables vides';?>");
                    </script>
                <?php     
            
    }
            
        }
    }
    Donc j'ai un lien " connexion" sur toutes mes pages qui renvoie vers la page chargée de récupérer les valeurs sur la carte et les envoie dans un cookie vers la page index.php de Joomla. Ce code figurant à la fin d'index.php pour lancer la connexion.

    Ce code vérifie si l'utilisateur n'est pas déjà connecté et si non : vérifie la présence du cookie, en extrait les valeurs, vérifient qu'elles existent bien et s'en sert pour lancer la connexion. J'ai également rajouté une fonction Javascript pour vérifier le contenu des variables.

    Le problème : au clic sur le lien " connexion" je suis bien redirigé sur la page de traitement, puis sur index.php, je réceptionne bien le cookie, les valeurs en sont bien extraites et s'affichent correctement dans l'alerte javascript mais la connexion ne se fait pas et j'ignore pourquoi.

    Je précise que j'avais déjà travaillé sur ce système dans un prototype pour ce site, que j'avais eu ce problème et que je l'avais résolu en rafraîchissant la page avec le javascript " window.location.reload(); " après la déclaration de login Joomla. Mais cette fois ça ne fonctionne pas, même si les valeurs sont correctes.

    Voilà désolé pour le pavé, je voulais être sur d'être bien compris. Merci d'avance si quelqu'un à une idée. Est-ce que mon code de login joomla serait erroné par hasard ?
    Dernière édition par Revak à 18/05/2013, 11h12

  • #2
    Re : login à partir de variables reçues

    Petite mise à jour :

    Ce système semble en fait fonctionner uniquement pour moi. J'arrive à m'authentifier avec ma carte mais pas avec celles d'autres utilisateurs. Pourtant je récupère les mêmes données sur toutes les cartes et elle sont toujours correctes.

    La seule différence que je vois entre mon cas et les autres est que je suis administrateur du site mais je ne vois pas en quoi ça pourrait jouer. Et j'ai essayé de restreindre mes droits et de donner les droits d'admin à d'autres mais même résultat : je peux me connecter et pas eux.

    Personne n'a une idée ?
    Je comprendrais à la limite que ça ne marche pas du tout mais là je suis vraiment perplexe de voir que ça ne marche qu'avec mon compte...

    Commentaire


    • #3
      Re : login à partir de variables reçues

      Up!

      Mon problème n'a pas l'air de déchaîner les foules..
      Est-ce que quelqu'un peut au moins me dire si la partie login est correcte ?

      Envoyé par Revak Voir le message
      $credentials = array( 'username' => $un, 'password' => $pwd);
      $login_site =& JFactory::getApplication('site');
      $login_site->login($credentials, $options=array());

      Commentaire


      • #4
        Re : login à partir de variables reçues

        Problème résolu grâce à Google.

        Pour ceux que ça intéresse, il y a parfois un décalage entre l'heure du serveur et celle du client avec IE8 et c'était mon cas ( 40 secondes de décalage). Mon cookie périmait après 10 secondes donc il n'était pas pris en compte.

        Problème réglé en mettant la durée de vie du cookie à 2 minutes ( par sécurité ).

        Commentaire

        Annonce

        Réduire
        Aucune annonce pour le moment.

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X