MCPcopy Index your code
hub / github.com/TruthHun/BookStack / ValidEmail

Method ValidEmail

controllers/AcountController.go:522–582  ·  view source on GitHub ↗

校验邮件并修改密码.

()

Source from the content-addressed store, hash-verified

520
521//校验邮件并修改密码.
522func (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, "保存密码失败")

Callers

nothing calls this directly

Calls 11

GetMailConfigFunction · 0.92
NewMemberTokenFunction · 0.92
NewMemberFunction · 0.92
PasswordHashFunction · 0.92
JsonResultMethod · 0.80
BaseUrlMethod · 0.80
CountMethod · 0.45
FindByFieldFirstMethod · 0.45
FindMethod · 0.45
UpdateMethod · 0.45
InsertOrUpdateMethod · 0.45

Tested by

no test coverage detected