diff --git a/main.go b/main.go index da59552..0a8e2da 100644 --- a/main.go +++ b/main.go @@ -309,6 +309,8 @@ func handleLogout(w http.ResponseWriter, r *http.Request) { type LoginFormData struct { Username string + WrongUser bool + WrongPass bool ErrorMessage string } @@ -335,10 +337,17 @@ func handleLogin(w http.ResponseWriter, r *http.Request) *LoginInfo { err := l.Bind(user_dn, password) if err != nil { - templateLogin.Execute(w, LoginFormData{ - Username: username, - ErrorMessage: err.Error(), - }) + data := &LoginFormData{ + Username: username, + } + if ldap.IsErrorWithCode(err, ldap.LDAPResultInvalidCredentials) { + data.WrongPass = true + } else if ldap.IsErrorWithCode(err, ldap.LDAPResultNoSuchObject) { + data.WrongUser = true + } else { + data.ErrorMessage = err.Error() + } + templateLogin.Execute(w, data) return nil } diff --git a/templates/login.html b/templates/login.html index 72e6754..8f24b78 100644 --- a/templates/login.html +++ b/templates/login.html @@ -4,6 +4,12 @@

S'identifier

+ {{if .WrongUser}} +
Nom d'utilisateur invalide.
+ {{end}} + {{if .WrongPass}} +
Mot de passe invalide.
+ {{end}} {{if .ErrorMessage}}
Impossible de se connecter.
{{ .ErrorMessage }}