//@URL: /users @method:POST func (uc *UserController) Register() { restweb.Logger.Debug("User Register") var one model.User userModel := model.UserModel{} uid := uc.Input.Get("user[handle]") nick := uc.Input.Get("user[nick]") pwd := uc.Input.Get("user[password]") pwdConfirm := uc.Input.Get("user[confirmPassword]") one.Mail = uc.Input.Get("user[mail]") one.School = uc.Input.Get("user[school]") one.Motto = uc.Input.Get("user[motto]") valid := restweb.Validation{} valid.MinSize(uid, 4, "uid") valid.Match(uid, "\\w+", "uid") if !valid.HasError { _, err := userModel.Detail(uid) if err != nil && err != model.NotFoundErr { http.Error(uc.W, err.Error(), 500) return } else if err == nil { valid.AppendError("uid", "Handle is currently in use.") } } valid.Required(nick, "nick") valid.MinSize(pwd, 6, "pwd") valid.Equal(pwd, pwdConfirm, "pwdConfirm") valid.Mail(one.Mail, "mail") if !valid.HasError { one.Uid = uid one.Nick = nick one.Pwd = pwd one.Privilege = config.PrivilegePU err := userModel.Insert(one) if err != nil { uc.Error(err.Error(), 500) return } uc.W.Header().Add("Location", "/users/"+uid) uc.W.WriteHeader(201) } else { hint := valid.RenderErrMap() b, _ := json.Marshal(&hint) uc.W.WriteHeader(400) uc.W.Write(b) } }
//@URL: /admin/users/generation @method: POST func (uc *AdminUser) Generate() { prefix := uc.Input["prefix"][0] module, _ := strconv.Atoi(uc.Input["module"][0]) module %= 2 amount, _ := strconv.Atoi(uc.Input["amount"][0]) if amount > 100 { amount = 100 } count := 0 tmp := amount for tmp > 0 { tmp /= 10 count++ } format := "%0" + strconv.Itoa(count) + "d" usermodel := &model.UserModel{} accountlist := "Uid \tPassword\n" for i, nxt := 0, 1; i < amount; { uid := prefix + fmt.Sprintf(format, nxt) password := RandPassword() restweb.Logger.Debug(uid, password) one := model.User{Uid: uid, Pwd: password, Module: module} one.Privilege = config.PrivilegePU if err := usermodel.Insert(one); err == nil { accountlist += uid + " \t" + password + "\n" i++ } nxt++ } uc.W.Header().Set("ContentType", "application/octet-stream") uc.W.Header().Add("Content-disposition", "attachment; filename=accountlist.txt") uc.W.Header().Add("Content-Length", strconv.Itoa(len(accountlist))) uc.W.Write([]byte(accountlist)) }
func (this *UserController) Register(w http.ResponseWriter, r *http.Request) { class.Logger.Debug("User Register") this.Init(w, r) var one model.User userModel := model.UserModel{} uid := r.FormValue("user[handle]") nick := r.FormValue("user[nick]") pwd := r.FormValue("user[password]") pwdConfirm := r.FormValue("user[confirmPassword]") one.Mail = r.FormValue("user[mail]") one.School = r.FormValue("user[school]") one.Motto = r.FormValue("user[motto]") ok := 1 hint := make(map[string]string) if uid == "" { ok, hint["uid"] = 0, "Handle should not be empty." } else { qry := make(map[string]string) qry["uid"] = uid ret, err := userModel.List(qry) if err != nil { http.Error(w, err.Error(), 500) } else if len(ret) > 0 { ok, hint["uid"] = 0, "This handle is currently in use." } } if nick == "" { ok, hint["nick"] = 0, "Nick should not be empty." } if len(pwd) < 6 { ok, hint["pwd"] = 0, "Password should contain at least six characters." } if pwd != pwdConfirm { ok, hint["pwdConfirm"] = 0, "Confirmation mismatched." } if ok == 1 { one.Uid = uid one.Nick = nick one.Pwd = pwd //one.Privilege = config.PrivilegePU one.Privilege = config.PrivilegeAD err := userModel.Insert(one) if err != nil { http.Error(w, err.Error(), 500) return } this.SetSession(w, r, "Uid", uid) this.SetSession(w, r, "Privilege", "1") w.WriteHeader(200) } else { b, err := json.Marshal(&hint) if err != nil { http.Error(w, "json error", 500) return } w.WriteHeader(400) w.Write(b) } }