github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/routers/root/RUpdateUser.go (about) 1 package root 2 3 import ( 4 "errors" 5 "fmt" 6 "github.com/insionng/makross" 7 8 "strconv" 9 "github.com/insionng/yougam/helper" 10 "github.com/insionng/yougam/models" 11 ) 12 13 func GetRUpdateUserHandler(self *makross.Context) error { 14 15 16 self.Set("catpage", "RUpdateUserHandler") 17 TplNames := "root/update_user" 18 19 if userid := self.Param("uid").MustInt64(); userid > 0 { 20 if usrinfo, err := models.GetUser(userid); err == nil && usrinfo != nil { 21 self.Set("usr", usrinfo) 22 23 // 匹配处理: /root/update/user/:uid/password/ 24 if holder := self.Param("holder").String(); len(holder) > 0 && holder == "password" { 25 randomPassword := helper.StringNewRand(8) 26 usrinfo.Password = helper.EncryptHash(randomPassword, nil) 27 if row, err := models.PutUser(userid, usrinfo); err != nil || row <= 0 { 28 self.Flash.Error("用户信息更新到数据库时发生错误!") 29 return self.Redirect("/root/update/user/" + strconv.FormatInt(userid, 10) + "/") 30 31 } else { 32 body := "<html><body><div>" 33 body = body + "<p>亲爱的 <strong>" + usrinfo.Username + "</strong> ,您好:</p>" 34 body = body + `<p style="padding-left:2em;">` + helper.SiteName + `的管理员已为你重置了` + helper.SiteName + `的登录密码为:</p>` 35 body = body + `<p>[<b>` + randomPassword + `</b>]</p>` 36 body = body + "<p>我们将一如既往竭诚为您服务!</p>" 37 body = body + `<p style="border-bottom:dotted 1px gray;height:1px;"></p>` 38 body = body + "<p>" + helper.MailAdline + "</p>" 39 body = body + "</div></body></html>" 40 41 subject := "【" + helper.SiteName + "】重置密码" 42 43 //发送邮件 44 if err := helper.SendEmail(usrinfo.Email, subject, body, "html"); err != nil { 45 es := fmt.Sprintf("为用户【%s】发送随机密码到【%s】失败,请你稍后重新尝试.", usrinfo.Username, usrinfo.Email) 46 self.Flash.Error(es) 47 return errors.New(es) 48 } else { 49 self.Flash.Success(fmt.Sprintf("为用户【%s】生成随机密码并已成功发送到【%s】.", usrinfo.Username, usrinfo.Email)) 50 return self.Redirect("/root/update/user/" + strconv.FormatInt(userid, 10) + "/") 51 } 52 53 } 54 55 } 56 } 57 return self.Render(TplNames) 58 59 } else { 60 return self.Redirect("/root/read/user/") 61 } 62 63 } 64 65 func PostRUpdateUserHandler(self *makross.Context) error { 66 67 68 self.Set("catpage", "RUpdateUserHandler") 69 70 if userid := self.Param("uid").MustInt64(); userid > 0 { 71 username := self.FormValue("username") 72 nickname := self.FormValue("nickname") 73 password := self.FormValue("password") 74 repassword := self.FormValue("repassword") 75 content := self.FormValue("content") 76 mobile := self.FormValue("mobile") 77 email := self.FormValue("email") 78 group := self.FormValue("group") 79 gender := self.Args("gender").MustInt64() 80 81 if len(password) > 0 { 82 if helper.CheckPassword(password) == false { 83 self.Flash.Error("密码含有非法字符或密码过短(至少4~30位密码)!") 84 return self.Redirect("/root/update/user/" + strconv.FormatInt(userid, 10) + "/") 85 86 } else if password != repassword { 87 88 self.Flash.Error("密码前后不一致,请确认你输入的密码正确无误!") 89 return self.Redirect("/root/update/user/" + strconv.FormatInt(userid, 10) + "/") 90 91 } 92 } else { 93 94 self.Flash.Error("密码为空!") 95 return self.Redirect("/root/update/user/" + strconv.FormatInt(userid, 10) + "/") 96 97 } 98 99 if len(username) == 0 { 100 self.Flash.Error("用户名是为永久性设定,不能少于4个字或多于30个字,请慎重考虑,不能为空!") 101 return self.Redirect("/root/update/user/" + strconv.FormatInt(userid, 10) + "/") 102 103 } 104 105 if len(email) > 0 { 106 if helper.CheckEmail(email) == false { 107 self.Flash.Error("邮箱格式错误!") 108 return self.Redirect("/root/update/user/" + strconv.FormatInt(userid, 10) + "/") 109 110 } 111 112 } else { 113 if helper.CheckEmail(username) == true { 114 email = username 115 } else if helper.CheckUsername(username) == false { 116 self.Flash.Error("用户名是为永久性设定,不能少于4个字或多于30个字,请慎重考虑,不能为空!") 117 return self.Redirect("/root/update/user/" + strconv.FormatInt(userid, 10) + "/") 118 119 } 120 121 } 122 123 usr, _ := models.GetUser(userid) 124 //usr.Id = userid 125 usr.Email = email 126 usr.Username = username 127 usr.Nickname = nickname 128 usr.Password = helper.EncryptHash(password, nil) 129 usr.Group = group 130 usr.Content = content 131 usr.Mobile = mobile 132 usr.Gender = gender 133 //usr.Role = 1 134 135 if row, err := models.PutUser(userid, usr); err != nil || row <= 0 { 136 self.Flash.Error("用户注册信息写入数据库时发生错误!") 137 return self.Redirect("/root/update/user/" + strconv.FormatInt(userid, 10) + "/") 138 139 } else { 140 141 if usrinfo, err := models.GetUser(userid); err == nil && usrinfo != nil { 142 self.Set("usr", usrinfo) 143 self.Flash.Success("用户账号保存成功!") 144 return self.Redirect("/root/update/user/" + strconv.FormatInt(userid, 10) + "/") 145 146 } else { 147 148 self.Flash.Error("获取用户数据出错!") 149 return self.Redirect("/root/read/user/") 150 151 } 152 153 } 154 } else { 155 156 self.Flash.Error("用户不存在!") 157 return self.Redirect("/root/read/user/") 158 } 159 }