user.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package main
  2. import (
  3. "errors"
  4. "net/http"
  5. "sparrow/pkg/models"
  6. "sparrow/pkg/rpcs"
  7. "sparrow/pkg/server"
  8. "time"
  9. jwt "github.com/dgrijalva/jwt-go"
  10. "github.com/martini-contrib/render"
  11. )
  12. // SignedString 签名
  13. const SignedString = "www.yehaoji.com"
  14. var (
  15. // ErrBadRequestString 参数不全错误
  16. ErrBadRequestString = errors.New("请求参数不全")
  17. )
  18. // UserToken 用户token结构体
  19. type UserToken struct {
  20. UserID uint
  21. UserName string
  22. UserType string
  23. RoleCode int
  24. jwt.StandardClaims
  25. }
  26. // UserLogin 用户登陆
  27. func UserLogin(loginRequest models.LoginRequest, r render.Render) {
  28. claims := UserToken{
  29. UserID: 1,
  30. UserName: "test",
  31. UserType: "member",
  32. RoleCode: 100,
  33. }
  34. claims.ExpiresAt = time.Now().Add(time.Hour * 24).Unix()
  35. token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
  36. ser, _ := token.SignedString([]byte(SignedString))
  37. r.JSON(http.StatusOK, ser)
  38. return
  39. }
  40. // UserRegister 用户注册
  41. func UserRegister(req models.Reqrequest, r render.Render) {
  42. vargs := models.Vendor{
  43. VendorName: req.VendorName,
  44. }
  45. vreply := &models.Vendor{}
  46. err := server.RPCCallByName("registry", "Registry.SaveVendor", &vargs, vreply)
  47. if err != nil {
  48. r.JSON(http.StatusOK, renderError(ErrSystemFault, err))
  49. return
  50. }
  51. uargs := &models.User{
  52. UserName: req.UserName,
  53. UserPass: req.PassWord,
  54. VendorID: vreply.ID,
  55. Phone: req.Phone,
  56. Email: req.Email,
  57. }
  58. ureply := &models.User{}
  59. err = server.RPCCallByName("registry", "Registry.Register", &uargs, ureply)
  60. if err != nil {
  61. r.JSON(http.StatusOK, renderError(ErrSystemFault, err))
  62. return
  63. }
  64. res := map[string]interface{}{
  65. "username": uargs.UserName,
  66. "phone": uargs.Phone,
  67. "email": uargs.Email,
  68. }
  69. r.JSON(http.StatusOK, res)
  70. return
  71. }
  72. // ModifyPassword 用户修改密码
  73. func ModifyPassword(req *http.Request, r render.Render, user *UserToken) {
  74. newpass := req.URL.Query().Get("newpass")
  75. oldpass := req.URL.Query().Get("oldpass")
  76. if len(newpass) == 0 || len(oldpass) == 0 {
  77. r.JSON(http.StatusOK, renderError(ErrWrongRequestFormat, ErrBadRequestString))
  78. return
  79. }
  80. args := rpcs.ArgsUserModifyPass{
  81. UserID: user.UserID,
  82. NewPass: newpass,
  83. OldPass: oldpass,
  84. }
  85. err := server.RPCCallByName("registry", "Registry.ModifyPass", &args, nil)
  86. if err != nil {
  87. r.JSON(http.StatusOK, renderError(ErrSystemFault, err))
  88. return
  89. }
  90. r.JSON(http.StatusOK, done("修改成功"))
  91. return
  92. }