change_pwd.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package base
  2. import (
  3. "net/http"
  4. backend2 "github.com/allanpk716/ChineseSubFinder/pkg/types/backend"
  5. "github.com/allanpk716/ChineseSubFinder/pkg/common"
  6. "github.com/allanpk716/ChineseSubFinder/pkg/settings"
  7. "github.com/gin-gonic/gin"
  8. )
  9. func (cb ControllerBase) ChangePwdHandler(c *gin.Context) {
  10. var err error
  11. defer func() {
  12. // 统一的异常处理
  13. cb.ErrorProcess(c, "ChangePwdHandler", err)
  14. }()
  15. changePwd := backend2.ReqChangePwd{}
  16. err = c.ShouldBindJSON(&changePwd)
  17. if err != nil {
  18. return
  19. }
  20. if settings.GetSettings().UserInfo.Username == "" || settings.GetSettings().UserInfo.Password == "" {
  21. // 配置文件中的账号和密码任意一个未空,提示用户需要进行 setup 流程
  22. c.JSON(http.StatusNoContent, backend2.ReplyCommon{Message: "You need do `Setup`"})
  23. return
  24. }
  25. if settings.GetSettings().UserInfo.Password != changePwd.OrgPwd {
  26. // 原始的密码不对
  27. c.JSON(http.StatusNoContent, backend2.ReplyCommon{Message: "Org Password Error"})
  28. } else {
  29. // 同意修改密码
  30. settings.GetSettings().UserInfo.Password = changePwd.NewPwd
  31. err = settings.GetSettings().Save()
  32. if err != nil {
  33. return
  34. }
  35. // 修改密码成功后,会清理 AccessToken,强制要求重写登录
  36. common.SetAccessToken("")
  37. c.JSON(http.StatusOK, backend2.ReplyCommon{Message: "ok, need ReLogin"})
  38. }
  39. }