user.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package controllers
  2. import (
  3. "sparrow/pkg/models"
  4. "sparrow/pkg/server"
  5. "sparrow/services/knowoapi/model"
  6. "sparrow/services/knowoapi/services"
  7. "github.com/kataras/iris"
  8. )
  9. // UserController api
  10. type UserController struct {
  11. Ctx iris.Context
  12. Service services.UserService
  13. Token Token
  14. }
  15. // PostLogin /login
  16. func (a *UserController) PostLogin() {
  17. lr := models.LoginRequest{}
  18. if err := parseBody(a.Ctx, &lr); err != nil {
  19. badRequest(a.Ctx, err)
  20. return
  21. }
  22. b, user, err := a.Service.Login(&lr)
  23. if err != nil {
  24. responseError(a.Ctx, ErrDatabase, "用户名或密码错误")
  25. return
  26. }
  27. if !b {
  28. responseError(a.Ctx, model.ErrUserNameOrPassCode, "用户名或密码错误")
  29. return
  30. }
  31. result := map[string]interface{}{
  32. "user_id": user.ID,
  33. "company": user.Vendor.VendorName,
  34. "access_token": a.Token.TokenMaker(user),
  35. "user_role": user.UserRoleID,
  36. }
  37. done(a.Ctx, result)
  38. }
  39. // PostRegistry 注册
  40. //POST /registry
  41. func (a *UserController) PostRegistry() {
  42. req := &models.Reqrequest{}
  43. if err := parseBody(a.Ctx, req); err != nil {
  44. badRequest(a.Ctx, err)
  45. return
  46. }
  47. b, err := a.Service.CheckEmail(req.Email)
  48. if err != nil {
  49. responseError(a.Ctx, ErrDatabase, err.Error())
  50. return
  51. }
  52. if b {
  53. responseError(a.Ctx, -1, "Email已经被注册")
  54. return
  55. }
  56. b, err = a.Service.CheckPhone(req.Phone)
  57. if err != nil {
  58. responseError(a.Ctx, ErrDatabase, err.Error())
  59. return
  60. }
  61. if b {
  62. responseError(a.Ctx, -1, "手机号被注册")
  63. return
  64. }
  65. b, err = a.Service.CheckUserName(req.UserName)
  66. if err != nil {
  67. responseError(a.Ctx, ErrDatabase, err.Error())
  68. return
  69. }
  70. if b {
  71. responseError(a.Ctx, -1, "该用户名已经被使用")
  72. return
  73. }
  74. user, err := a.Service.Register(req)
  75. if err != nil {
  76. responseError(a.Ctx, ErrDatabase, err.Error())
  77. return
  78. }
  79. done(a.Ctx, map[string]interface{}{
  80. "user_name": user.UserName,
  81. "user_key": user.UserKey,
  82. "vendor_id": user.VendorID,
  83. "user_id": user.ID,
  84. })
  85. }
  86. // PutChange 修改密码
  87. // PUT /user/changepass
  88. func (a *UserController) PutChange() {
  89. req := new(models.ChangePassWordRequest)
  90. if err := parseBody(a.Ctx, req); err != nil {
  91. badRequest(a.Ctx, err)
  92. return
  93. }
  94. //req.OldPass = base64.StdEncoding.EncodeToString([]byte(req.OldPass))
  95. //req.NewPass = base64.StdEncoding.EncodeToString([]byte(req.NewPass))
  96. b, err := a.Service.ModifyPassword(a.Token.getRecorID(a.Ctx), req.OldPass, req.NewPass)
  97. if err != nil {
  98. server.Log.Error(err)
  99. responseError(a.Ctx, ErrDatabase, err.Error())
  100. return
  101. }
  102. if !b {
  103. responseError(a.Ctx, ErrNormal, "原密码不正确")
  104. return
  105. }
  106. done(a.Ctx, "修改成功")
  107. }
  108. // GetMenu get user menu
  109. // GET /user/menu
  110. func (a *UserController) GetMenu() {
  111. roleid := a.Token.getRoleID(a.Ctx)
  112. role, err := a.Service.GetRole(roleid)
  113. if err != nil {
  114. responseError(a.Ctx, ErrNormal, "用户角色信息错误,请联系管理员")
  115. return
  116. }
  117. done(a.Ctx, map[string]interface{}{
  118. "menu_list": role.MenuList,
  119. "role_name": role.RoleName,
  120. })
  121. }