change_pwd.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package v1
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/allanpk716/ChineseSubFinder/internal/backend/common"
  6. "github.com/allanpk716/ChineseSubFinder/internal/dao"
  7. "github.com/allanpk716/ChineseSubFinder/internal/types/backend"
  8. "github.com/gin-gonic/gin"
  9. "net/http"
  10. )
  11. func (cb ControllerBase) ChangePwdHandler(c *gin.Context) {
  12. var err error
  13. defer func() {
  14. // 统一的异常处理
  15. cb.ErrorProcess(c, "ChangePwdHandler", err)
  16. }()
  17. changePwd := backend.ReqChangePwd{}
  18. err = c.ShouldBindJSON(&changePwd)
  19. if err != nil {
  20. return
  21. }
  22. found, dbUserInfo, err := dao.GetUserInfo()
  23. if err != nil {
  24. return
  25. }
  26. if found == false {
  27. // 找不到用户
  28. c.JSON(http.StatusInternalServerError, backend.ReplyCommon{Message: "Can't Found UserInfo"})
  29. } else if dbUserInfo.Password != changePwd.OrgPwd {
  30. // 原始的密码不对
  31. c.JSON(http.StatusNoContent, backend.ReplyCommon{Message: "Org Password Error"})
  32. } else {
  33. // 同意修改密码
  34. dbUserInfo.Password = changePwd.NewPwd
  35. re := dao.GetDb().Updates(dbUserInfo)
  36. if re == nil {
  37. err = errors.New(fmt.Sprintf("dao.GetDb().Updates return nil"))
  38. return
  39. }
  40. if re.Error != nil {
  41. err = re.Error
  42. return
  43. }
  44. // 修改密码成功后,会清理 AccessToken,强制要求重写登录
  45. common.SetAccessToken("")
  46. c.JSON(http.StatusOK, backend.ReplyCommon{Message: "ok"})
  47. }
  48. }