Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
Bonjour,
On peut constater que si on crée un utilisateur et qu'on lui affecte seulement le droit "menu" (par exemple), il ne peut pas se connecter.
En fouillant dans le code, on voit que l'authentification est gérée par /admin/auth.php à partir de :
# Try to log
elseif ($user_id !== null && ($user_pwd !== null || $user_key !== null))
{
# We check the user
$check_user = $core->auth->checkUser($user_id,$user_pwd,$user_key) === true;
Le code de la fonction checkUser est dans la classe "/inc/core/class.dc.auth.php". Elle est chargée de vérifier les droits de l'utilisateur. À la fin est appelée une méthode "findUserBlog" qui semble servir à identifier le blog sur lequel l'utilisateur a des droits. Cependant la condition sur les permissions est :
$strReq = 'SELECT blog_id '.
'FROM '.$this->perm_table.' '.
"WHERE user_id = '".$this->con->escape($this->user_id)."' ".
"AND (permissions LIKE '%|usage|%' OR permissions LIKE '%|admin|%' OR permissions LIKE '%|contentadmin|%') ".
'ORDER BY blog_id ASC '.
On voit que si les permissions ne contiennent ni "usage", ni "admin", ni "contentadmin", aucun blog ne sera remonté et par conséquent l'authentification échouera.
Je ne sais pas si on peut considérer ça comme un bogue, car c'est sûrement voulu, mais c'est au moins quelque chose qu'il faudrait explicitement signaler à l'utilisateur car le message "Nom d'utilisateur ou mot de passe incorrect" n'est clairement pas pertinent.
Cordialement,
Grégoire
Hors ligne
Vous n'êtes pas identifié(e).