setup.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package base
  2. import (
  3. "net/http"
  4. backend2 "github.com/ChineseSubFinder/ChineseSubFinder/pkg/types/backend"
  5. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/settings"
  6. "github.com/gin-gonic/gin"
  7. )
  8. func (cb *ControllerBase) SetupHandler(c *gin.Context) {
  9. var err error
  10. defer func() {
  11. // 统一的异常处理
  12. cb.ErrorProcess(c, "SetupHandler", err)
  13. }()
  14. setupInfo := backend2.ReqSetupInfo{}
  15. err = c.ShouldBindJSON(&setupInfo)
  16. if err != nil {
  17. return
  18. }
  19. // 只有当用户不存在的时候才能够执行初始化操作
  20. found := false
  21. if settings.Get().UserInfo.Username != "" && settings.Get().UserInfo.Password != "" {
  22. found = true
  23. }
  24. if found == true {
  25. // 存在则反馈无需初始化
  26. c.JSON(http.StatusNoContent, backend2.ReplyCommon{Message: "already setup"})
  27. } else {
  28. // 需要创建用户,因为上述判断了没有用户存在,所以就默认直接新建了
  29. err = settings.SetFullNewSettings(&setupInfo.Settings)
  30. if err != nil {
  31. return
  32. }
  33. c.JSON(http.StatusOK, backend2.ReplyCommon{Message: "ok"})
  34. }
  35. // 回复完毕后,发送重启 http server 的信号
  36. cb.restartSignal <- 1
  37. }