package main import ( "fmt" "html/template" "io" "net/http" "path/filepath" "strings" "redisdog/model" ) func profile_logout(resp http.ResponseWriter, req *http.Request) { sess, ok := checkLogin(resp, req) if ok { SessPoll.Del(sess.Sess) } resp.Header().Set("Location", "/login") resp.WriteHeader(302) } func profile_passwd(resp http.ResponseWriter, req *http.Request) { sess, ok := checkLogin(resp, req) if !ok { return } if req.Method == "GET" { //视图输出 files := []string{ filepath.Join(Cfg.TmplDir, "profile", "passwd.tmpl"), filepath.Join(Cfg.TmplDir, "header.tmpl"), filepath.Join(Cfg.TmplDir, "navbar.tmpl"), } tmpl, err := template.New("passwd.tmpl").Funcs(TmplFuncMap).ParseFiles(files...) if err != nil { io.WriteString(resp, fmt.Sprintf("Error: %s\n", err.Error())) } else { tmpl.Execute(resp, struct { Sess *Session Req *http.Request Title string }{ sess, req, "修改密码", }) } } else { req.ParseForm() oldpwd := strings.TrimSpace(req.PostForm.Get("oldpwd")) newpwd := strings.TrimSpace(req.PostForm.Get("newpwd")) if oldpwd == "" { resp.Write(ERROR_RET(1, "旧密码不能为空!")) } else if len(oldpwd) < 6 { resp.Write(ERROR_RET(2, "旧密码格式不正确空!")) } else if newpwd == "" { resp.Write(ERROR_RET(3, "新密码不能为空!")) } else if len(newpwd) < 6 { resp.Write(ERROR_RET(4, "旧密码格式不正确空!")) } else if oldpwd == newpwd { resp.Write(ERROR_RET(5, "新密码不能与旧密码相同!")) } else { mdlAccounts := model.NewAccounts(Db) row, err := mdlAccounts.Login(sess.Account.Account, oldpwd) if err != nil { resp.Write(ERROR_RET(6, "旧密码不正确!")) } else { affected, err := mdlAccounts.UpdatePassword(row.Id, newpwd) if err != nil { resp.Write(ERROR_RET(7, err.Error())) } else if affected > 0 { resp.Write(ERROR_RET(0, "")) } else { resp.Write(ERROR_RET(7, "未知错误!")) } } } } }