settings.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package v1
  2. import (
  3. "github.com/allanpk716/ChineseSubFinder/internal/pkg/settings"
  4. "github.com/allanpk716/ChineseSubFinder/internal/types/backend"
  5. "github.com/gin-gonic/gin"
  6. "net/http"
  7. )
  8. func (cb ControllerBase) SettingsHandler(c *gin.Context) {
  9. var err error
  10. defer func() {
  11. // 统一的异常处理
  12. cb.ErrorProcess(c, "SettingsHandler", err)
  13. }()
  14. switch c.Request.Method {
  15. case "GET":
  16. {
  17. // 回复没有密码的 settings
  18. c.JSON(http.StatusOK, settings.GetSettings().GetNoPasswordSettings())
  19. }
  20. case "PATH":
  21. {
  22. // 修改设置,这里不允许修改密码
  23. reqSetupInfo := backend.ReqSettings{}
  24. err = c.ShouldBindJSON(&reqSetupInfo)
  25. if err != nil {
  26. return
  27. }
  28. // 需要去除 user 的 password 信息再保存,也就是继承之前的 password 即可
  29. err = settings.GetSettings().Read()
  30. if err != nil {
  31. return
  32. }
  33. nowPassword := settings.GetSettings().UserInfo.Password
  34. reqSetupInfo.Settings.UserInfo.Password = nowPassword
  35. err = settings.SetFullNewSettings(&reqSetupInfo.Settings)
  36. if err != nil {
  37. return
  38. }
  39. err = settings.GetSettings().Save()
  40. if err != nil {
  41. return
  42. }
  43. c.JSON(http.StatusOK, backend.ReplyCommon{Message: "Settings Save Success`"})
  44. }
  45. default:
  46. c.JSON(http.StatusNoContent, backend.ReplyCommon{Message: "Settings Request.Method Error`"})
  47. }
  48. }