Submitted by pcsystemd on
Bonjour,
je souhaite me connecter depuis mon intranet actuel via LDAP sur mon intranet devellopé sur Drupal. En partant d'une portion de code que j'ai trouvé sur Drupal.org je l'ai adapté et cela fonctionne.
Mon problème est que j'ai une erreur de connexion : "Could not log you in. Please try again later" quand l'utilisateur ne c'est pas logué au moins une fois via ldap sur Drupal car quand l'utilisateur se logue via LDAP il y a un insert dans la table user du name.
Donc j'ai fait une condition qui vérifie si l'utilisateur est présent en base il récupére si non il fait un insert et c'est la mon problème car j'ai l'insert ne se fait pas. Je débute en PHP donc il se peux que mon code soit pas bon.
Une petite idée?
Merci
<?php
require_once 'includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
global $user;
$userName = $_REQUEST["user"];
$password = $_REQUEST["passwd"];
$form_state['values']['name']=$userName;
$form_state['values']['pass']=$password;
ldapauth_authenticate($form_state);
//ldapauth_login_validate(null,$form_state);
global $base_url;
$uQuery="select uid from users where name='$userName'";
$rSet=db_query($uQuery);
$result = db_fetch_object($rSet);
if(empty($result))
{
$iQuery="insert into {users} (name,statut) VALUES('$userName',1)";
db_query($iQuery);
$uQuery="select uid from users where name='$userName'";
$rSet=db_query($uQuery);
$result = db_fetch_object($rSet);
}
if(
$result && function_exists("user_load"))
{
if ($account = user_load(array('uid'=>$result->uid, 'status' => 1)))
{
$user = $account;
watchdog('user', 'Session opened for %name : .%name', array('%name' => $user->name));
$user->login = time();
db_query("UPDATE {users} SET login = %d WHERE uid = %d", $user->login, $user->uid);
sess_regenerate();
drupal_goto($base_url.'/intra');
}
}
else
{
echo "<h1>Could not log you in. Please try again later.</h1>";
}
?>
Je pense qu'il faut d'abord
Permalien Soumis par Artusamak le 7 Décembre, 2009 - 01:04
Je pense qu'il faut d'abord que tu testes si ton utilisateur s'est loggué au moins une fois au LDAP, si non tu mets un message d'erreur l'invitant d'abord à se connecter une première fois (si c'est le fonctionnement que tu souhaites) et ensuite tu te connectes à la base de drupal pour faire ta requête.
Utilise db_connect si besoin > http://api.drupal.org/api/function/db_connect/6
Merci Artusamak, finalement
Permalien Soumis par pcsystemd le 7 Décembre, 2009 - 11:13
Merci Artusamak,
finalement j'ai fait comme un test pour savoir si l'user était deja en BD et si non l'insert se fait comme tu me l'a suggéré et ok cela fonctionne maintenant.