bouil.org

Google Reader Shared

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;
}