Réutiliser les mots de passe MediaWiki
Imaginons que vous ayez un site sous MediaWiki 1.5, et que vous voulez utiliser sa base de donnée d'utilisateurs pour limiter l'accès à une page de votre conception aux seuls personnes ayant un compte sous votre Wiki. Voici la fonction PHP que j'ai utilisée dans ce cas de figure :
$wgPasswordSalt = true;
function identification($login, $password)
{
$connexion = mysql_pconnect($serveur_mysql, $login_mysql, $pass_mysql);
@mysql_select_db($nom_base_mysql);
$requete = "SELECT user_id, user_password FROM user WHERE user_name = '" . $login . "'";
$results = mysql_query($requete, $connexion);
$nb_results = mysql_num_rows($results);
if($nb_results == 0)
{
//auth pas ok
mysql_free_result($results);
return "Nom d'utilisateur ou mot de passe incorrect.";
}
else
{
$dict = mysql_fetch_assoc($results);
$db_passwd = $dict["user_password"];
$db_id = $dict["user_id"];
mysql_free_result($results);
$enc_passwd = wfEncryptPassword($db_id, $password);
if (strcmp($enc_passwd, $db_passwd) == 0)
{
//auth ok
return "ok";
}
else
{
return "Nom d'utilisateur ou mot de passe incorrect. ";
}
}
}
function wfEncryptPassword( $userid, $password )
{
global $wgPasswordSalt;
$p = md5( $password);
if($wgPasswordSalt)
return md5( "{$userid}-{$p}" );
else
return $p;
}