package main import ( "errors" "net/http" "sparrow/pkg/models" "sparrow/pkg/rpcs" "sparrow/pkg/server" "time" jwt "github.com/dgrijalva/jwt-go" "github.com/martini-contrib/render" ) // SignedString 签名 const SignedString = "www.yehaoji.com" var ( // ErrBadRequestString 参数不全错误 ErrBadRequestString = errors.New("请求参数不全") ) // UserToken 用户token结构体 type UserToken struct { UserID uint UserName string UserType string RoleCode int jwt.StandardClaims } // UserLogin 用户登陆 func UserLogin(loginRequest models.LoginRequest, r render.Render) { claims := UserToken{ UserID: 1, UserName: "test", UserType: "member", RoleCode: 100, } claims.ExpiresAt = time.Now().Add(time.Hour * 24).Unix() token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) ser, _ := token.SignedString([]byte(SignedString)) r.JSON(http.StatusOK, ser) return } // UserRegister 用户注册 func UserRegister(req models.Reqrequest, r render.Render) { vargs := models.Vendor{ VendorName: req.VendorName, } vreply := &models.Vendor{} err := server.RPCCallByName("registry", "Registry.SaveVendor", &vargs, vreply) if err != nil { r.JSON(http.StatusOK, renderError(ErrSystemFault, err)) return } uargs := &models.User{ UserName: req.UserName, UserPass: req.PassWord, VendorID: vreply.ID, Phone: req.Phone, Email: req.Email, } ureply := &models.User{} err = server.RPCCallByName("registry", "Registry.Register", &uargs, ureply) if err != nil { r.JSON(http.StatusOK, renderError(ErrSystemFault, err)) return } res := map[string]interface{}{ "username": uargs.UserName, "phone": uargs.Phone, "email": uargs.Email, } r.JSON(http.StatusOK, res) return } // ModifyPassword 用户修改密码 func ModifyPassword(req *http.Request, r render.Render, user *UserToken) { newpass := req.URL.Query().Get("newpass") oldpass := req.URL.Query().Get("oldpass") if len(newpass) == 0 || len(oldpass) == 0 { r.JSON(http.StatusOK, renderError(ErrWrongRequestFormat, ErrBadRequestString)) return } args := rpcs.ArgsUserModifyPass{ UserID: user.UserID, NewPass: newpass, OldPass: oldpass, } err := server.RPCCallByName("registry", "Registry.ModifyPass", &args, nil) if err != nil { r.JSON(http.StatusOK, renderError(ErrSystemFault, err)) return } r.JSON(http.StatusOK, done("修改成功")) return }