func (this *MainController) Register() { this.activeContent("user/register") if this.Ctx.Input.Method() == "POST" { flash := beego.NewFlash() u := user1{} if err := this.ParseForm(&u); err != nil { fmt.Println("cannot parse form") return } this.Data["User"] = u valid := validation.Validation{} if b, _ := valid.Valid(&u); !b { this.Data["Errors"] = valid.ErrorsMap return } if u.Password != u.Confirm { flash.Error("Passwords don't match") flash.Store(&this.Controller) return } h := pk.HashPassword(u.Password) //******** Save user info to database o := orm.NewOrm() o.Using("default") user := models.AuthUser{First: u.First, Last: u.Last, Email: u.Email} // Convert password hash to string user.Password = hex.EncodeToString(h.Hash) + hex.EncodeToString(h.Salt) // Add user to database with new uuid and send verification email key := uuid.NewV4() user.Reg_key = key.String() _, err := o.Insert(&user) if err != nil { flash.Error(u.Email + " already registered") flash.Store(&this.Controller) return } domainname := this.Data["domainname"] if !this.sendVerification(u.Email, key.String(), domainname.(string)) { flash.Error("Unable to send verification email") flash.Store(&this.Controller) return } flash.Notice("Your account has been created. You must verify the account in your email.") flash.Store(&this.Controller) this.Redirect("/notice", 302) } }
func (this *MainController) Verify() { this.activeContent("user/verify") u := this.Ctx.Input.Param(":uuid") o := orm.NewOrm() o.Using("default") user := models.AuthUser{Reg_key: u} err := o.Read(&user, "Reg_key") if err == nil { this.Data["Verified"] = 1 user.Reg_key = "" if _, err := o.Update(&user); err != nil { delete(this.Data, "Verified") } } }