Simplify error handling

This commit is contained in:
Sung Won Cho 2021-01-05 21:32:35 +11:00
commit a18ad1e351
3 changed files with 12 additions and 15 deletions

View file

@ -201,10 +201,12 @@ func getStatusCode(err error) int {
}
// handleHTMLError writes the error to the log and sets the error message in the data.
func handleHTMLError(w http.ResponseWriter, err error, msg string, d *views.Data) {
func handleHTMLError(w http.ResponseWriter, r *http.Request, err error, msg string, v *views.View, d *views.Data) {
statusCode := getStatusCode(err)
w.WriteHeader(statusCode)
logError(err, msg)
d.SetAlert(err)
v.Render(w, r, d)
}

View file

@ -5,7 +5,6 @@ import (
"github.com/dnote/dnote/pkg/server/app"
"github.com/dnote/dnote/pkg/server/config"
"github.com/dnote/dnote/pkg/server/log"
"github.com/dnote/dnote/pkg/server/views"
)
@ -48,26 +47,23 @@ type LoginForm struct {
}
func (u *Users) Login(w http.ResponseWriter, r *http.Request) {
vd := views.Data{}
var form LoginForm
if err := parseRequestData(r, &form); err != nil {
log.Error(err.Error())
w.WriteHeader(500)
handleHTMLError(w, r, err, "parsing request data", u.LoginView, &vd)
return
}
vd := views.Data{}
user, err := u.app.Authenticate(form.Email, form.Password)
if err != nil {
handleHTMLError(w, err, "authenticating user", &vd)
u.LoginView.Render(w, r, vd)
handleHTMLError(w, r, err, "authenticating user", u.LoginView, &vd)
return
}
session, err := u.app.SignIn(user)
if err != nil {
handleHTMLError(w, err, "signing in a user", &vd)
u.LoginView.Render(w, r, vd)
handleHTMLError(w, r, err, "signing in a user", u.LoginView, &vd)
return
}
@ -80,14 +76,13 @@ func (u *Users) Logout(w http.ResponseWriter, r *http.Request) {
key, err := GetCredential(r)
if err != nil {
handleHTMLError(w, err, "signing in a user", &vd)
handleHTMLError(w, r, err, "getting credentials", u.LoginView, &vd)
u.LoginView.Render(w, r, vd)
return
}
if err = u.app.DeleteSession(key); err != nil {
handleHTMLError(w, err, "signing in a user", &vd)
u.LoginView.Render(w, r, vd)
handleHTMLError(w, r, err, "deleting session", u.LoginView, &vd)
return
}

View file

@ -101,7 +101,7 @@ func startCmd() {
r := routes.New(&app, rc)
log.Printf("dnote version %s is running on port %s", versionTag, *port)
log.Printf("Dnote version %s is running on port %s", versionTag, *port)
log.Fatalln(http.ListenAndServe(fmt.Sprintf(":%s", cfg.Port), r))
}
@ -110,7 +110,7 @@ func versionCmd() {
}
func rootCmd() {
fmt.Printf(`dnote server - a simple personal knowledge base
fmt.Printf(`Dnote server - a simple personal knowledge base
Usage:
dnote-server [command]