func (this *loginController) login(w http.ResponseWriter, req *http.Request) { w.Header().Add("Content-Type", "text/html") responseWriter := util.GetResponseWriter(w, req) defer responseWriter.Close() if req.Method == "POST" { email := req.FormValue("email") password := req.FormValue("password") member, err := models.GetMember(email, password) if err != nil { responseWriter.Write([]byte(err.Error())) return } session, err := models.CreateSession(member) if err != nil { responseWriter.Write([]byte(err.Error())) return } var cookie http.Cookie cookie.Name = "sessionId" cookie.Value = session.SessionId() responseWriter.Header().Add("Set-Cookie", cookie.String()) } vm := viewmodels.GetLogin() this.template.Execute(responseWriter, vm) }
func (this *homeController) login(w http.ResponseWriter, req *http.Request) { responseWriter := util.GetResponseWriter(w, req) defer responseWriter.Close() responseWriter.Header().Add("Content-Type", "text/html") vm := viewmodels.GetLogin() if req.FormValue("submit") == "signup" { http.Redirect(w, req, "/signup", http.StatusFound) } else { if req.Method == "POST" { email := req.FormValue("email") password := req.FormValue("password") member, err := models.GetMember(email, password) if err == nil { session, err := models.CreateSession(member) if err == nil { var cookie http.Cookie cookie.Name = "goSessionId" cookie.Expires = time.Now().Add(10 * time.Minute) cookie.Value = strconv.Itoa(session.MemberId()) responseWriter.Header().Add("Set-Cookie", cookie.String()) var cookie2 http.Cookie cookie2.Name = "loggedName" cookie2.Expires = time.Now().Add(10 * time.Minute) cookie2.Value = member.FirstName() responseWriter.Header().Add("Set-Cookie", cookie2.String()) } vmh := viewmodels.GetHome() vmh.LoggedIn = true vmh.LoggedName = member.FirstName() this.template.Execute(responseWriter, vmh) } else { this.loginTemplate.Execute(responseWriter, vm) } } else { this.loginTemplate.Execute(responseWriter, vm) } } }
func main() { templates := populateTemplates() http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { requestedFile := req.URL.Path[1:] // log.Println("view event:", req) req.ParseForm() var context interface{} = nil template := templates.Lookup(requestedFile + ".html") switch requestedFile { case "room": nickname := req.PostFormValue("nickname") if nickname == "" { nickname = "Visitor" + string(rand.Intn(100)) } context = viewmodels.GetRoom(nickname) case "about": context = viewmodels.GetAbout() case "login": context = viewmodels.GetLogin() } if template != nil { template.Execute(w, context) } else { w.WriteHeader(404) } }) http.HandleFunc("/api/", func(w http.ResponseWriter, req *http.Request) { requestedFile := req.URL.Path[5:] //log.Println("api event:", req) var context []byte switch requestedFile { case "getdata": context = apimodels.GetData(req) case "postdata": context = apimodels.PostData(req) } w.WriteHeader(200) w.Write(context) }) http.HandleFunc("/img/", serveResource) http.HandleFunc("/css/", serveResource) http.HandleFunc("/scripts/", serveResource) log.Println("Listening in port 1720...") http.ListenAndServe(":1720", nil) }