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 :
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 ?
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
}
}
}
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 ?
Commentaire