setting.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package controller
  2. import (
  3. "errors"
  4. "github.com/gin-gonic/gin"
  5. "time"
  6. "x-ui/web/entity"
  7. "x-ui/web/service"
  8. "x-ui/web/session"
  9. )
  10. type updateUserForm struct {
  11. OldUsername string `json:"oldUsername" form:"oldUsername"`
  12. OldPassword string `json:"oldPassword" form:"oldPassword"`
  13. NewUsername string `json:"newUsername" form:"newUsername"`
  14. NewPassword string `json:"newPassword" form:"newPassword"`
  15. }
  16. type SettingController struct {
  17. settingService service.SettingService
  18. userService service.UserService
  19. panelService service.PanelService
  20. }
  21. func NewSettingController(g *gin.RouterGroup) *SettingController {
  22. a := &SettingController{}
  23. a.initRouter(g)
  24. return a
  25. }
  26. func (a *SettingController) initRouter(g *gin.RouterGroup) {
  27. g = g.Group("/setting")
  28. g.POST("/all", a.getAllSetting)
  29. g.POST("/update", a.updateSetting)
  30. g.POST("/updateUser", a.updateUser)
  31. g.POST("/restartPanel", a.restartPanel)
  32. }
  33. func (a *SettingController) getAllSetting(c *gin.Context) {
  34. allSetting, err := a.settingService.GetAllSetting()
  35. if err != nil {
  36. jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
  37. return
  38. }
  39. jsonObj(c, allSetting, nil)
  40. }
  41. func (a *SettingController) updateSetting(c *gin.Context) {
  42. allSetting := &entity.AllSetting{}
  43. err := c.ShouldBind(allSetting)
  44. if err != nil {
  45. jsonMsg(c, I18n(c, "pages.setting.toasts.modifySetting"), err)
  46. return
  47. }
  48. err = a.settingService.UpdateAllSetting(allSetting)
  49. jsonMsg(c, I18n(c, "pages.setting.toasts.modifySetting"), err)
  50. }
  51. func (a *SettingController) updateUser(c *gin.Context) {
  52. form := &updateUserForm{}
  53. err := c.ShouldBind(form)
  54. if err != nil {
  55. jsonMsg(c, I18n(c, "pages.setting.toasts.modifySetting"), err)
  56. return
  57. }
  58. user := session.GetLoginUser(c)
  59. if user.Username != form.OldUsername || user.Password != form.OldPassword {
  60. jsonMsg(c, I18n(c, "pages.setting.toasts.modifyUser"), errors.New(I18n(c, "pages.setting.toasts.originalUserPassIncorrect")))
  61. return
  62. }
  63. if form.NewUsername == "" || form.NewPassword == "" {
  64. jsonMsg(c, I18n(c, "pages.setting.toasts.modifyUser"), errors.New(I18n(c, "pages.setting.toasts.userPassMustBeNotEmpty")))
  65. return
  66. }
  67. err = a.userService.UpdateUser(user.Id, form.NewUsername, form.NewPassword)
  68. if err == nil {
  69. user.Username = form.NewUsername
  70. user.Password = form.NewPassword
  71. session.SetLoginUser(c, user)
  72. }
  73. jsonMsg(c, I18n(c, "pages.setting.toasts.modifyUser"), err)
  74. }
  75. func (a *SettingController) restartPanel(c *gin.Context) {
  76. err := a.panelService.RestartPanel(time.Second * 3)
  77. jsonMsg(c, I18n(c, "pages.setting.restartPanel"), err)
  78. }