示例#1
0
文件: account.go 项目: jango2015/OJ
//POST /account/send-reset-email
func (c Account) SendResetEmail(email string) revel.Result {
	var user models.User
	code := uuid.NewUUID()
	user.Email = email
	user.ResetCode = code.String()
	user.ResetCodeCreatedTime = time.Now()
	if user.HasEmail() {
		_, err := engine.Where("email = ?", email).
			Cols("reset_code", "reset_code_created_time").
			Update(&user)
		if err != nil {
			fmt.Println(err)
		}
		subject := "reset password"
		content := fmt.Sprintf(
			`<h2><a href="http://%s:%s/account/reset/%s">Reset Password</a></h2>`,
			appAddr, appPort, user.ResetCode)
		SendMail(
			subject,
			content,
			smtpConfig.Username,
			[]string{email},
			smtpConfig,
			true)
		c.Flash.Success("Email has been sent, pleas check it.")
		return c.Redirect(routes.Account.Notice())
	} else {
		c.Flash.Error("Incorrect Email")
		return c.Redirect(routes.Account.Notice())
	}
}
示例#2
0
文件: account.go 项目: jango2015/OJ
//POST /account/reset
func (c Account) PostReset(user models.User) revel.Result {
	username := c.Session[USERNAME]
	if user.Password == user.ConfirmPassword {
		user.HashedPassword, user.Salt = models.GenHashPasswordAndSalt(user.Password)
		user.ResetCode = ""
		_, err := engine.Where("name = ?", username).
			Cols("hashed_password", "salt", "reset_code").
			Update(&user)
		if err != nil {
			fmt.Println(err)
		}
		c.Session[USERNAME] = username
		c.Flash.Success("reset success!")
		return c.Redirect(routes.Problem.Index(0))
	} else {
		resetcode := c.Flash.Data[RESETCODE]
		c.Flash.Error("两次密码输入不一致")
		return c.Redirect(routes.Account.Reset(resetcode))
	}
}