func ResetPassword(w http.ResponseWriter, req *http.Request, ctx *models.Context) error { // should not be logged in if ctx.User != nil { ctx.Session.AddFlash(models.F(models.SUCCESS, trans("Already logged in!", ctx))) http.Redirect(w, req, reverse("index"), http.StatusSeeOther) return nil } form := models.UserForm form.Fields = form.Fields[2:3] r := (&form).Load(req) ctx.Data["result"] = r if r.Err != nil { ctx.Session.AddFlash(models.F(models.ERROR, trans("Problem reseting password:"******"csrf_token") != ctx.Session.Values["csrf_token"] { return perform_status(w, req, http.StatusForbidden) } if len(r.Errors) != 0 { return ResetPasswordForm(w, req, ctx) } email := r.Values["email"] u := &models.User{} err := ctx.C(U).Find(bson.M{"email": email}).One(&u) if err == nil { pt := &models.PasswordToken{ Uuid: models.GenUUID(), User: u.Id, CreatedOn: time.Now(), } // set new password to database if err := ctx.C(PT).Insert(pt); err != nil { ctx.Session.AddFlash(models.F(models.ERROR, trans("Problem reseting password:"******"Subject: lov3ly.me password reset\r\n\r\nChange password link: http://%s\n\nIf you have NOT requested this, please ignore. Link available for 24 hours.\n\nHave fun,\nlov3ly.me Team", req.Host+reverse("change_token", "uuid", pt.Uuid)) go func() { err := models.SendEmail([]byte(body), email) if err != nil { models.Log("Error sending mail: ", err.Error()) } }() ctx.Session.AddFlash(models.F(models.SUCCESS, trans("Email sent succesfully!", ctx))) } else { ctx.Session.AddFlash(models.F(models.NOTICE, trans("Email not in our database:", ctx), err.Error())) } http.Redirect(w, req, reverse("login"), http.StatusSeeOther) return nil }
func Contact(w http.ResponseWriter, req *http.Request, ctx *models.Context) (err error) { if req.FormValue("csrf_token") != ctx.Session.Values["csrf_token"] { return perform_status(w, req, http.StatusForbidden) } r := models.ContactForm.Load(req) if len(r.Errors) != 0 { ctx.Data["result"] = r return ContactForm(w, req, ctx) } body := fmt.Sprintf("Subject: lov3ly.me message\r\n\r\n %s\n%s\n\n%s", r.Values["name"], r.Values["email"], r.Values["message"]) go func() { err := models.SendEmail([]byte(body), "*****@*****.**") if err != nil { models.Log("Error sending mail: ", err.Error()) } }() ctx.Session.AddFlash(models.F(models.SUCCESS, "Message sent. Thank you!")) return ContactForm(w, req, ctx) }