diff --git a/cmd/owl/web/editor_handler.go b/cmd/owl/web/editor_handler.go
index f493a13..b07e032 100644
--- a/cmd/owl/web/editor_handler.go
+++ b/cmd/owl/web/editor_handler.go
@@ -60,7 +60,11 @@ func userLoginGetHandler(repo *owl.Repository) func(http.ResponseWriter, *http.R
return
}
csrfToken := setCSRFCookie(w)
- html, err := owl.RenderLoginPage(user, csrfToken)
+
+ // get error from query
+ error_type := r.URL.Query().Get("error")
+
+ html, err := owl.RenderLoginPage(user, error_type, csrfToken)
if err != nil {
println("Error rendering login page: ", err.Error())
w.WriteHeader(http.StatusInternalServerError)
@@ -107,12 +111,8 @@ func userLoginPostHandler(repo *owl.Repository) func(http.ResponseWriter, *http.
}
password := r.Form.Get("password")
- if password == "" {
- userLoginGetHandler(repo)(w, r, ps)
- return
- }
- if !user.VerifyPassword(password) {
- userLoginGetHandler(repo)(w, r, ps)
+ if password == "" || !user.VerifyPassword(password) {
+ http.Redirect(w, r, user.EditorLoginUrl()+"?error=wrong_password", http.StatusFound)
return
}
diff --git a/cmd/owl/web/editor_test.go b/cmd/owl/web/editor_test.go
index de5cb65..7c5878a 100644
--- a/cmd/owl/web/editor_test.go
+++ b/cmd/owl/web/editor_test.go
@@ -56,7 +56,7 @@ func TestLoginWrongPassword(t *testing.T) {
// check redirect to login page
- assertions.AssertNotEqual(t, rr.Header().Get("Location"), user.EditorUrl())
+ assertions.AssertEqual(t, rr.Header().Get("Location"), user.EditorLoginUrl()+"?error=wrong_password")
}
func TestLoginCorrectPassword(t *testing.T) {
diff --git a/embed/editor/login.html b/embed/editor/login.html
index f42eb23..f3e7dc4 100644
--- a/embed/editor/login.html
+++ b/embed/editor/login.html
@@ -1,3 +1,10 @@
+{{ if eq .Error "wrong_password" }}
+