校验邮件并修改密码.
()
| 520 | |
| 521 | //校验邮件并修改密码. |
| 522 | func (this *AccountController) ValidEmail() { |
| 523 | password1 := this.GetString("password1") |
| 524 | password2 := this.GetString("password2") |
| 525 | token := this.GetString("token") |
| 526 | mail := this.GetString("mail") |
| 527 | |
| 528 | if password1 == "" { |
| 529 | this.JsonResult(6001, "密码不能为空") |
| 530 | } |
| 531 | if l := strings.Count(password1, ""); l < 6 || l > 50 { |
| 532 | this.JsonResult(6001, "密码不能为空且必须在6-50个字符之间") |
| 533 | } |
| 534 | if password2 == "" { |
| 535 | this.JsonResult(6002, "确认密码不能为空") |
| 536 | } |
| 537 | if password1 != password2 { |
| 538 | this.JsonResult(6003, "确认密码输入不正确") |
| 539 | } |
| 540 | |
| 541 | if !cpt.VerifyReq(this.Ctx.Request) { |
| 542 | this.JsonResult(6001, "验证码不正确") |
| 543 | } |
| 544 | |
| 545 | mailConf := conf.GetMailConfig() |
| 546 | memberToken, err := models.NewMemberToken().FindByFieldFirst("token", token) |
| 547 | |
| 548 | if err != nil { |
| 549 | beego.Error(err) |
| 550 | this.JsonResult(6007, "邮件已失效") |
| 551 | } |
| 552 | subTime := memberToken.SendTime.Sub(time.Now()) |
| 553 | |
| 554 | if !strings.EqualFold(memberToken.Email, mail) || subTime.Minutes() > float64(mailConf.MailExpired) || !memberToken.ValidTime.IsZero() { |
| 555 | |
| 556 | this.JsonResult(6008, "验证码已过期,请重新操作。") |
| 557 | } |
| 558 | member, err := models.NewMember().Find(memberToken.MemberId) |
| 559 | if err != nil { |
| 560 | beego.Error(err) |
| 561 | this.JsonResult(6005, "用户不存在") |
| 562 | } |
| 563 | hash, err := utils.PasswordHash(password1) |
| 564 | |
| 565 | if err != nil { |
| 566 | beego.Error(err) |
| 567 | this.JsonResult(6006, "保存密码失败") |
| 568 | } |
| 569 | |
| 570 | member.Password = hash |
| 571 | |
| 572 | err = member.Update("password") |
| 573 | memberToken.ValidTime = time.Now() |
| 574 | memberToken.IsValid = true |
| 575 | memberToken.InsertOrUpdate() |
| 576 | |
| 577 | if err != nil { |
| 578 | beego.Error(err) |
| 579 | this.JsonResult(6006, "保存密码失败") |
nothing calls this directly
no test coverage detected