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)
+}