diff --git a/template.go b/template.go index 30a820b..dd77718 100644 --- a/template.go +++ b/template.go @@ -44,6 +44,7 @@ var templates = template.Must(template.ParseFiles(TEMPLATE_PATH+"header.html", TEMPLATE_PATH+"book.html", TEMPLATE_PATH+"search.html", TEMPLATE_PATH+"upload.html", + TEMPLATE_PATH+"login.html", TEMPLATE_PATH+"new.html", TEMPLATE_PATH+"read.html", TEMPLATE_PATH+"edit.html", diff --git a/templates/header.html b/templates/header.html index 67a45d7..78a68d5 100644 --- a/templates/header.html +++ b/templates/header.html @@ -77,7 +77,7 @@ {{else}} -
  • +
  • {{end}} diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..8b8ec92 --- /dev/null +++ b/templates/login.html @@ -0,0 +1,16 @@ +{{template "header.html" .S}} + +

    Log In

    +
    +
    +
    + +
    +
    +
    + +
    + +
    + +{{template "footer.html"}} diff --git a/trantor.go b/trantor.go index 89b1d67..8eabc13 100644 --- a/trantor.go +++ b/trantor.go @@ -35,21 +35,6 @@ func logoutHandler(w http.ResponseWriter, r *http.Request, sess *Session) { http.Redirect(w, r, "/", http.StatusFound) } -func loginHandler(w http.ResponseWriter, r *http.Request, sess *Session) { - user := r.FormValue("user") - pass := r.FormValue("pass") - if db.UserValid(user, pass) { - log.Println("User", user, "log in") - sess.LogIn(user) - sess.Notify("Successful login!", "Welcome "+user, "success") - } else { - log.Println("User", user, "bad user or password") - sess.Notify("Invalid login!", "user or password invalid", "error") - } - sess.Save(w, r) - http.Redirect(w, r, r.Referer(), http.StatusFound) -} - type bookData struct { S Status Book Book @@ -167,7 +152,8 @@ func setUpRouter() { r.HandleFunc("/search/", GatherStats(searchHandler)) r.HandleFunc("/upload/", GatherStats(uploadHandler)).Methods("GET") r.HandleFunc("/upload/", GatherStats(uploadPostHandler)).Methods("POST") - r.HandleFunc("/login/", GatherStats(loginHandler)).Methods("POST") + r.HandleFunc("/login/", GatherStats(loginHandler)).Methods("GET") + r.HandleFunc("/login/", GatherStats(loginPostHandler)).Methods("POST") r.HandleFunc("/logout/", GatherStats(logoutHandler)) r.HandleFunc("/new/", GatherStats(newHandler)) r.HandleFunc("/store/{ids:([0-9a-fA-F]+/)+}", GatherStats(storeHandler)) diff --git a/user.go b/user.go new file mode 100644 index 0000000..243ed74 --- /dev/null +++ b/user.go @@ -0,0 +1,27 @@ +package main + +import ( + "log" + "net/http" +) + +func loginHandler(w http.ResponseWriter, r *http.Request, sess *Session) { + var data statusData + data.S = GetStatus(w, r) + loadTemplate(w, "login", data) +} + +func loginPostHandler(w http.ResponseWriter, r *http.Request, sess *Session) { + user := r.FormValue("user") + pass := r.FormValue("pass") + if db.UserValid(user, pass) { + log.Println("User", user, "log in") + sess.LogIn(user) + sess.Notify("Successful login!", "Welcome "+user, "success") + } else { + log.Println("User", user, "bad user or password") + sess.Notify("Invalid login!", "user or password invalid", "error") + } + sess.Save(w, r) + http.Redirect(w, r, r.Referer(), http.StatusFound) +}