func regHandlerV2(request *http.Request, resp http.ResponseWriter, redis *models.RedisLogger, form regFormV2) { exists, err := models.CheckUserExists(form.Id, form.Type) if err != nil { writeResponse(request.RequestURI, resp, nil, errors.NewError(errors.DbError)) return } if exists { writeResponse(request.RequestURI, resp, nil, errors.NewError(errors.UserExistError)) return } dbw, err := getNewWallet() if err != nil { writeResponse(request.RequestURI, resp, nil, errors.NewError(errors.DbError, "创建钱包失败")) return } user := &models.Account{ Role: form.Type, Password: Md5(form.Password), Nickname: form.Nickname, Profile: form.Profile, Gender: form.Gender, Birth: form.Birthday, Wallet: *dbw, RegTime: time.Now(), } switch form.Type { case models.AccountPhone: user.Phone = form.Id case models.AccountWeibo: user.Weibo = form.Id case models.AccountEmail: fallthrough default: user.Email = form.Id } if err := user.Save(); err != nil { writeResponse(request.RequestURI, resp, nil, err) return } token := Uuid() + "-" + strconv.FormatInt(time.Now().AddDate(0, 0, 30).Unix(), 10) data := map[string]string{"access_token": token, "userid": user.Id} writeResponse(request.RequestURI, resp, data, nil) redis.LogRegister(user.Id, form.Type) redis.SetOnlineUser(token, user.Id) // ws push //regNotice(user.Id, redis) }
/* func (this loginForm) getUserId() string { return this.Userid } */ func weiboLogin(uid, password string, redis *models.RedisLogger) (bool, *models.Account, error) { user := &models.Account{} exists, err := user.FindByWeibo(strings.ToLower(uid)) if err != nil { return false, nil, err } p := Md5(password) registered := user.RegTime.Unix() > 0 if registered { if user.Password != p { user.SetPassword(p) } return false, user, nil } weiboUser, err := GetWeiboUserInfo(uid, password) if err != nil { return false, nil, err } user.Nickname = weiboUser.ScreenName if find, _ := user.Exists("nickname"); find { user.Nickname = "wb_" + user.Nickname } user.Password = p if !strings.HasPrefix(weiboUser.Gender, "f") { user.Gender = "male" } else { user.Gender = "female" } user.Weibo = uid user.Url = weiboUser.Url user.Profile = weiboUser.Avatar //user.Addr = &models.Address{Desc: weiboUser.Location} user.About = weiboUser.Description user.Role = models.AccountWeibo user.RegTime = time.Now() dbw, err := getNewWallet() if err != nil { return true, nil, err } user.Wallet = *dbw if !exists { if err := user.Save(); err != nil { return true, nil, err } } redis.LogRegister(user.Id, user.Role) // ws push regNotice(user.Id, redis) return true, user, nil }
func registerHandler(request *http.Request, resp http.ResponseWriter, redis *models.RedisLogger, form userRegForm) { user := &models.Account{} t := "" if phone, _ := strconv.ParseUint(form.Email, 10, 64); phone > 0 { user.Phone = form.Email t = models.AccountPhone } else { user.Email = strings.ToLower(form.Email) t = models.AccountEmail } if exists, _ := user.Exists(t); exists { writeResponse(request.RequestURI, resp, nil, errors.NewError(errors.UserExistError)) return } //user.Nickname = form.Nickname user.Password = Md5(form.Password) user.Role = t user.RegTime = time.Now() dbw, err := getNewWallet() if err != nil { writeResponse(request.RequestURI, resp, nil, errors.NewError(errors.DbError, "wallet: "+err.Error())) return } user.Wallet = *dbw if err := user.Save(); err != nil { writeResponse(request.RequestURI, resp, nil, err) } else { token := Uuid() + "-" + strconv.FormatInt(time.Now().AddDate(0, 0, 30).Unix(), 10) data := map[string]string{"access_token": token, "userid": user.Id} writeResponse(request.RequestURI, resp, data, nil) redis.LogRegister(user.Id, t) redis.SetOnlineUser(token, user.Id) // ws push regNotice(user.Id, redis) } }