// 重置密码 // uri: /account/resetpwd func ResetPasswdHandler(rw http.ResponseWriter, req *http.Request) { if _, ok := filter.CurrentUser(req); ok { util.Redirect(rw, req, "/") return } uuid := req.FormValue("code") if uuid == "" { util.Redirect(rw, req, "/account/login") return } req.Form.Set(filter.CONTENT_TPL_KEY, "/template/user/reset_pwd.html") data := map[string]interface{}{"activeUsers": "active"} passwd := req.FormValue("passwd") email, ok := resetPwdMap[uuid] if !ok { // 是提交重置密码 if passwd != "" && req.Method == "POST" { data["error"] = template.HTML(`非法请求!<p>将在<span id="jumpTo">3</span>秒后跳转到<a href="/" id="jump_url">首页</a></p>`) } else { data["error"] = template.HTML(`链接无效或过期,请重新操作。<a href="/account/forgetpwd">忘记密码?</a>`) } filter.SetData(req, data) return } data["valid"] = true data["code"] = uuid // 提交修改密码 if passwd != "" && req.Method == "POST" { // 简单校验 if len(passwd) < 6 || len(passwd) > 32 { data["error"] = "密码长度必须在6到32个字符之间" } else if passwd != req.FormValue("pass2") { data["error"] = "两次密码输入不一致" } else { // 更新密码 _, err := service.UpdatePasswd(email, passwd) if err != nil { data["error"] = "对不起,服务器错误,请重试!" } else { data["success"] = template.HTML(`密码重置成功,<p>将在<span id="jumpTo">3</span>秒后跳转到<a href="/account/login" id="jump_url">登录</a>页面</p>`) } } } filter.SetData(req, data) }
// 修改密码 // uri: /account/changepwd.json func ChangePwdHandler(rw http.ResponseWriter, req *http.Request) { curUser, _ := filter.CurrentUser(req) username := curUser["username"].(string) curPasswd := req.PostFormValue("cur_passwd") _, err := service.Login(username, curPasswd) if err != nil { // 原密码错误 fmt.Fprint(rw, `{"ok": 0, "error": "原密码填写错误!"}`) return } // 更新密码 errMsg, err := service.UpdatePasswd(username, req.PostFormValue("passwd")) if err != nil { fmt.Fprint(rw, `{"ok": 0, "error":"`, errMsg, `"}`) return } fmt.Fprint(rw, `{"ok": 1, "msg":"密码修改成功!"}`) }