Use exception for user login

This commit is contained in:
Victor LABORIE 2017-12-17 18:22:49 +01:00
parent 0b7b63dd35
commit e99c3f2b78
2 changed files with 10 additions and 26 deletions

View file

@ -16,17 +16,14 @@ if (isset($_SESSION['login'])) {
}
if (!empty($_POST['login'])) {
if ($server = new LdapServer(Html::clean($_POST['login']), LDAP_BASE, LDAP_ADMIN_DN, LDAP_ADMIN_PASS, LDAP_URI)) {
if ($server->login(Html::clean($_POST['password']))) {
$_SESSION['login'] = $server->getLogin();
$_SESSION['dn'] = $server->getDn();
header("location: superadmin.php\n\n");
exit(0);
} else {
print "<div class='alert alert-danger' role='alert'>&Eacute;chec de l\'authentification, utilisateur ou mot de passe incorrect.<br />Si vous avez oubli&eacute; votre mot de passe, contactez <a href='mailto:" .$conf['admin']['mail']. "'>" .$conf['admin']['mail']. "</a></div>";
}
} else {
print "<div class=\"alert alert-danger\" role=\"alert\">Erreur de connexion LDAP !</div>";
try {
$server = new LdapServer(Html::clean($_POST['login']), LDAP_BASE, LDAP_ADMIN_DN, LDAP_ADMIN_PASS, LDAP_URI);
$server->login(Html::clean($_POST['password']));
$_SESSION['login'] = $server->getLogin();
header("location: superadmin.php\n\n");
exit(0);
} catch (Exception $e) {
print '<div class="alert alert-danger" role="alert">'.$e->getMessage().'</div>';
}
}
?>

View file

@ -54,21 +54,8 @@ class LdapServer {
public function login($password) {
$sr=ldap_search($this->conn, self::getBaseDN($this), "(&(uid=".$this->login.")(isAdmin=TRUE))");
$info = ldap_get_entries($this->conn, $sr);
if ($info['count']) {
if (@ldap_bind($this->conn, $info[0]['dn'], $password)) {
unset($password);
$this->base = $info[0]['dn'];
# EvoLog::log("Login success for " . $this->login);
return true;
} else {
$this->__destruct();
# EvoLog::log("Password failed : " . $this->login);
return false;
}
} else {
$this->__destruct();
# EvoLog::log("Login failed : " . $this->login);
return false;
if (!$info['count'] || !@ldap_bind($this->conn, $info[0]['dn'], $password)) {
throw new Exception("&Eacute;chec de l'authentification, utilisateur ou mot de passe incorrect.");
}
}