diff options
Diffstat (limited to 'handler.go')
| -rw-r--r-- | handler.go | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/handler.go b/handler.go new file mode 100644 index 0000000..e708a20 --- /dev/null +++ b/handler.go @@ -0,0 +1,78 @@ +package main + +import ( + "log" + "net/http" +) + +func IndexHandler(w http.ResponseWriter, r *http.Request) { + session, err := store.Get(r, "_SID") + if err != nil { + log.Println(err) + } + + flash := Flash{} + flash.Error = session.Flashes("error") + flash.Success = session.Flashes("success") + + index := mainTempl.Lookup("index.html") + + err = index.ExecuteTemplate(w, "index.html", flash) + if err != nil { + log.Println(err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + session.Save(r, w) +} + +func CreateNewEntryHandler(w http.ResponseWriter, r *http.Request) { + err := r.ParseForm() + if err != nil { + log.Panic(err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + req := Request{} + err = decoder.Decode(&req, r.PostForm) + if err != nil { + log.Panic(err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + session, err := store.Get(r, "_SID") + if err != nil { + log.Println(err) + } + + if !CompareStrings(req.Email, req.ConfirmEmail) { + session.AddFlash("E-Mail don't match.", "error") + session.Save(r, w) + http.Redirect(w, r, "/", 302) + return + } + + if !CompareStrings(req.Password, req.ConfirmPassword) { + session.AddFlash("Passwords don't match.", "error") + session.Save(r, w) + http.Redirect(w, r, "/", 302) + return + } + + req.Password = Md5Hash(req.Password) + + err = CreateNewEntry(req.Email, req.Password) + if err != nil { + session.AddFlash(err, "error") + session.Save(r, w) + http.Redirect(w, r, "/", 302) + return + } + + session.AddFlash("Success! You can login now with your new mail account.") + session.Save(r, w) + http.Redirect(w, r, "/", 302) +} |
