diff options
| author | MHSanaei <mc.sanaei@gmail.com> | 2023-02-09 22:18:06 +0300 |
|---|---|---|
| committer | MHSanaei <mc.sanaei@gmail.com> | 2023-02-09 22:18:06 +0300 |
| commit | b73e4173a3c1e69e02ad6b4e3b43e425e57a5be9 (patch) | |
| tree | d95d2f5e903d97082e11eb9f9023c165b1bde388 /web/controller/setting.go | |
3x-ui
Diffstat (limited to 'web/controller/setting.go')
| -rw-r--r-- | web/controller/setting.go | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/web/controller/setting.go b/web/controller/setting.go new file mode 100644 index 00000000..f500c76d --- /dev/null +++ b/web/controller/setting.go @@ -0,0 +1,88 @@ +package controller + +import ( + "errors" + "github.com/gin-gonic/gin" + "time" + "x-ui/web/entity" + "x-ui/web/service" + "x-ui/web/session" +) + +type updateUserForm struct { + OldUsername string `json:"oldUsername" form:"oldUsername"` + OldPassword string `json:"oldPassword" form:"oldPassword"` + NewUsername string `json:"newUsername" form:"newUsername"` + NewPassword string `json:"newPassword" form:"newPassword"` +} + +type SettingController struct { + settingService service.SettingService + userService service.UserService + panelService service.PanelService +} + +func NewSettingController(g *gin.RouterGroup) *SettingController { + a := &SettingController{} + a.initRouter(g) + return a +} + +func (a *SettingController) initRouter(g *gin.RouterGroup) { + g = g.Group("/setting") + + g.POST("/all", a.getAllSetting) + g.POST("/update", a.updateSetting) + g.POST("/updateUser", a.updateUser) + g.POST("/restartPanel", a.restartPanel) +} + +func (a *SettingController) getAllSetting(c *gin.Context) { + allSetting, err := a.settingService.GetAllSetting() + if err != nil { + jsonMsg(c, I18n(c , "pages.setting.toasts.getSetting"), err) + return + } + jsonObj(c, allSetting, nil) +} + +func (a *SettingController) updateSetting(c *gin.Context) { + allSetting := &entity.AllSetting{} + err := c.ShouldBind(allSetting) + if err != nil { + jsonMsg(c, I18n(c , "pages.setting.toasts.modifySetting"), err) + return + } + err = a.settingService.UpdateAllSetting(allSetting) + jsonMsg(c, I18n(c , "pages.setting.toasts.modifySetting"), err) +} + +func (a *SettingController) updateUser(c *gin.Context) { + form := &updateUserForm{} + err := c.ShouldBind(form) + if err != nil { + jsonMsg(c, I18n(c , "pages.setting.toasts.modifySetting"), err) + return + } + user := session.GetLoginUser(c) + if user.Username != form.OldUsername || user.Password != form.OldPassword { + jsonMsg(c, I18n(c , "pages.setting.toasts.modifyUser"), errors.New(I18n(c , "pages.setting.toasts.originalUserPassIncorrect"))) + return + } + if form.NewUsername == "" || form.NewPassword == "" { + jsonMsg(c,I18n(c , "pages.setting.toasts.modifyUser"), errors.New(I18n(c , "pages.setting.toasts.userPassMustBeNotEmpty"))) + return + } + err = a.userService.UpdateUser(user.Id, form.NewUsername, form.NewPassword) + if err == nil { + user.Username = form.NewUsername + user.Password = form.NewPassword + session.SetLoginUser(c, user) + } + jsonMsg(c, I18n(c , "pages.setting.toasts.modifyUser"), err) +} + +func (a *SettingController) restartPanel(c *gin.Context) { + err := a.panelService.RestartPanel(time.Second * 3) + jsonMsg(c, I18n(c , "pages.setting.restartPanel"), err) +} |
