login.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package base
  2. import (
  3. "net/http"
  4. "github.com/ChineseSubFinder/ChineseSubFinder/pkg"
  5. backend2 "github.com/ChineseSubFinder/ChineseSubFinder/pkg/types/backend"
  6. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/common"
  7. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/settings"
  8. "github.com/gin-gonic/gin"
  9. )
  10. func (cb *ControllerBase) LoginHandler(c *gin.Context) {
  11. var err error
  12. defer func() {
  13. // 统一的异常处理
  14. cb.ErrorProcess(c, "LoginHandler", err)
  15. }()
  16. nowUserInfo := settings.UserInfo{}
  17. err = c.ShouldBindJSON(&nowUserInfo)
  18. if err != nil {
  19. return
  20. }
  21. if settings.Get().UserInfo.Username == "" || settings.Get().UserInfo.Password == "" {
  22. // 配置文件中的账号和密码任意一个未空,提示用户需要进行 setup 流程
  23. c.JSON(http.StatusNoContent, backend2.ReplyCommon{Message: "You need do `Setup`"})
  24. return
  25. }
  26. if settings.Get().UserInfo.Username != nowUserInfo.Username ||
  27. settings.Get().UserInfo.Password != nowUserInfo.Password {
  28. // 账号密码不匹配
  29. c.JSON(http.StatusBadRequest, backend2.ReplyCommon{Message: "Username or Password Error"})
  30. return
  31. } else {
  32. // 用户账号密码匹配
  33. nowAccessToken := pkg.GenerateAccessToken()
  34. common.SetAccessToken(nowAccessToken)
  35. c.JSON(http.StatusOK, backend2.ReplyLogin{AccessToken: nowAccessToken,
  36. Settings: *settings.Get().GetNoPasswordSettings()})
  37. return
  38. }
  39. }