summaryrefslogtreecommitdiff
path: root/handler.go
diff options
context:
space:
mode:
Diffstat (limited to 'handler.go')
-rw-r--r--handler.go78
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)
+}