func (this *LoginController) Post() { this.TplNames = "login.tpl" this.Ctx.Request.ParseForm() username := this.Ctx.Request.Form.Get("username") password := this.Ctx.Request.Form.Get("password") md5Password := md5.New() io.WriteString(md5Password, password) buffer := bytes.NewBuffer(nil) fmt.Fprintf(buffer, "%x", md5Password.Sum(nil)) newPass := buffer.String() now := time.Now().Format("2006-01-02 15:04:05") userInfo := models.GetUserInfo(username) if userInfo.Password == newPass { var users models.User users.Last_logintime = now models.UpdateUserInfo(users) //登录成功设置session sess := globalSessions.SessionStart(this.Ctx.ResponseWriter, this.Ctx.Request) sess.Set("uid", userInfo.Id) sess.Set("uname", userInfo.Username) this.Ctx.Redirect(302, "/") } this.Ctx.Redirect(302, "/") }
func (this *UserController) Reg() { beego.Info("register controller") result := make(map[string]interface{}) result["succ"] = "succ" email := this.GetString("email") pwd := this.GetString("pwd") beego.Info(email) beego.Info(pwd) u := new(models.User) u.Email = email u.Pwd = helper.MD5(pwd) u.Reged = time.Now() u.Uname = email id, err := models.SaveUser(u) if err != nil { beego.Error(err) result["succ"] = "err" } else { result["id"] = u.Pwd result["email"] = email } this.SetSession("online_user", "u_"+strconv.FormatInt(id, 10)) this.SetSession("online_user_email", email) this.Data["json"] = result this.ServeJson() }
//登录 func (this *AccountController) Login() { if this.GetString("dosubmit") == "yes" { account := strings.TrimSpace(this.GetString("account")) password := strings.TrimSpace(this.GetString("password")) remember := this.GetString("remember") if account != "" && password != "" { var user models.User user.Username = account if user.Read("username") != nil || user.Password != models.Md5([]byte(password)) { this.Data["errmsg"] = "帐号或密码错误" } else if user.Active == 0 { this.Data["errmsg"] = "该帐号未激活" } else { user.Logincount += 1 user.Lastip = this.getClientIp() user.Lastlogin = this.getTime() user.Update() authkey := models.Md5([]byte(this.getClientIp() + "|" + user.Password)) if remember == "yes" { this.Ctx.SetCookie("auth", strconv.FormatInt(user.Id, 10)+"|"+authkey, 7*86400) } else { this.Ctx.SetCookie("auth", strconv.FormatInt(user.Id, 10)+"|"+authkey) } this.Redirect("/admin", 302) } } } this.TplName = "admin/account_login.html" }
//删除用户 func (this *UserController) Delete() { id, _ := this.GetInt64("id") if id == 1 { this.showmsg("不能删除ID为1的用户") } user := models.User{Id: id} if user.Read() == nil { user.Delete() } this.Redirect("/admin/user/list", 302) }
func (this *RegController) Post() { this.TplNames = "reg.tpl" this.Ctx.Request.ParseForm() username := this.Ctx.Request.Form.Get("username") password := this.Ctx.Request.Form.Get("password") usererr := checkUsername(username) fmt.Println(usererr) if usererr == false { this.Data["UsernameErr"] = "Username error, Please to again" return } passerr := checkPassword(password) if passerr == false { this.Data["PasswordErr"] = "Password error, Please to again" return } md5Password := md5.New() io.WriteString(md5Password, password) buffer := bytes.NewBuffer(nil) fmt.Fprintf(buffer, "%x", md5Password.Sum(nil)) newPass := buffer.String() now := time.Now().Format("2006-01-02 15:04:05") userInfo := models.GetUserInfo(username) if userInfo.Username == "" { var users models.User users.Username = username users.Password = newPass users.Created = now users.Last_logintime = now models.AddUser(users) //登录成功设置session sess := globalSessions.SessionStart(this.Ctx.ResponseWriter, this.Ctx.Request) sess.Set("uid", userInfo.Id) sess.Set("uname", userInfo.Username) this.Ctx.Redirect(302, "/") } else { this.Data["UsernameErr"] = "User already exists" } }
//编辑用户 func (this *UserController) Edit() { id, _ := this.GetInt64("id") user := models.User{Id: id} if err := user.Read(); err != nil { this.showmsg("用户不存在") } errmsg := make(map[string]string) if this.Ctx.Request.Method == "POST" { password := strings.TrimSpace(this.GetString("password")) password2 := strings.TrimSpace(this.GetString("password2")) email := strings.TrimSpace(this.GetString("email")) active, _ := this.GetInt64("active") valid := validation.Validation{} if password != "" { if v := valid.Required(password2, "password2"); !v.Ok { errmsg["password2"] = "请再次输入密码" } else if password != password2 { errmsg["password2"] = "两次输入的密码不一致" } else { user.Password = models.Md5([]byte(password)) } } if v := valid.Required(email, "email"); !v.Ok { errmsg["email"] = "请输入email地址" } else if v := valid.Email(email, "email"); !v.Ok { errmsg["email"] = "Email无效" } else { user.Email = email } if active > 0 { user.Active = 1 } else { user.Active = 0 } if len(errmsg) == 0 { user.Update() this.Redirect("/admin/user/list", 302) } } this.Data["errmsg"] = errmsg this.Data["user"] = user this.display() }
//用户列表 func (this *UserController) List() { var page int64 var pagesize int64 = 10 var list []*models.User var user models.User if page, _ = this.GetInt64("page"); page < 1 { page = 1 } offset := (page - 1) * pagesize count, _ := user.Query().Count() if count > 0 { user.Query().OrderBy("-id").Limit(pagesize, offset).All(&list) } this.Data["list"] = list this.Data["pagebar"] = models.NewPager(page, count, pagesize, "/admin/user/list?page=%d").ToString() this.display() }
//资料修改 func (this *AccountController) Profile() { user := models.User{Id: this.userid} if err := user.Read(); err != nil { this.showmsg(err.Error()) } if this.Ctx.Request.Method == "POST" { errmsg := make(map[string]string) password := strings.TrimSpace(this.GetString("password")) newpassword := strings.TrimSpace(this.GetString("newpassword")) newpassword2 := strings.TrimSpace(this.GetString("newpassword2")) updated := false if newpassword != "" { if password == "" || models.Md5([]byte(password)) != user.Password { errmsg["password"] = "******" } else if len(newpassword) < 6 { errmsg["newpassword"] = "******" } else if newpassword != newpassword2 { errmsg["newpassword2"] = "两次输入的密码不一致" } if len(errmsg) == 0 { user.Password = models.Md5([]byte(newpassword)) user.Update("password") updated = true } } this.Data["updated"] = updated this.Data["errmsg"] = errmsg } this.Data["user"] = user this.display() }
//登录状态验证 func (this *baseController) auth() { if this.controllerName == "account" && (this.actionName == "login" || this.actionName == "logout") { } else { arr := strings.Split(this.Ctx.GetCookie("auth"), "|") if len(arr) == 2 { idstr, password := arr[0], arr[1] userid, _ := strconv.ParseInt(idstr, 10, 0) if userid > 0 { var user models.User user.Id = userid if user.Read() == nil && password == models.Md5([]byte(this.getClientIp()+"|"+user.Password)) { this.userid = user.Id this.username = user.Username } } } if this.userid == 0 { this.Redirect("/admin/login", 302) } } }
//添加用户 func (this *UserController) Add() { input := make(map[string]string) errmsg := make(map[string]string) if this.Ctx.Request.Method == "POST" { username := strings.TrimSpace(this.GetString("username")) password := strings.TrimSpace(this.GetString("password")) password2 := strings.TrimSpace(this.GetString("password2")) email := strings.TrimSpace(this.GetString("email")) active, _ := this.GetInt64("active") input["username"] = username input["password"] = password input["password2"] = password2 input["email"] = email valid := validation.Validation{} if v := valid.Required(username, "username"); !v.Ok { errmsg["username"] = "******" } else if v := valid.MaxSize(username, 15, "username"); !v.Ok { errmsg["username"] = "******" } if v := valid.Required(password, "password"); !v.Ok { errmsg["password"] = "******" } if v := valid.Required(password2, "password2"); !v.Ok { errmsg["password2"] = "请再次输入密码" } else if password != password2 { errmsg["password2"] = "两次输入的密码不一致" } if v := valid.Required(email, "email"); !v.Ok { errmsg["email"] = "请输入email地址" } else if v := valid.Email(email, "email"); !v.Ok { errmsg["email"] = "Email无效" } if active > 0 { active = 1 } else { active = 0 } if len(errmsg) == 0 { var user models.User user.Username = username user.Password = models.Md5([]byte(password)) user.Email = email user.Active = int8(active) if err := user.Insert(); err != nil { this.showmsg(err.Error()) } this.Redirect("/admin/user/list", 302) } } this.Data["input"] = input this.Data["errmsg"] = errmsg this.display() }