package user import ( "encoding/json" "errors" "github.com/astaxie/beego/logs" "nginx-ui/server/base" "nginx-ui/server/models" "nginx-ui/server/modules/settings" "nginx-ui/server/vo" ) type Controller struct { base.Controller service *Service } func NewUserController() *Controller { return &Controller{ service: NewUserService(), } } // Login 登录 func (c *Controller) Login() { var user models.User err := json.Unmarshal(c.Ctx.Input.RequestBody, &user) if err != nil { logs.Error(err, string(c.Ctx.Input.RequestBody)) c.ErrorJson(err) return } resp := c.service.Login(&user) if resp.Success() { c.SetSession("user", user) } c.PostJson(resp) } // Logout 退出登录 func (c *Controller) Logout() { user := c.RequiredUser() if user != nil { c.DelSession("user") } c.Json() } func (c *Controller) User() { user := c.RequiredUser() if user == nil { return } routes, _ := settings.Route.GetUserRoutes(user) if routes != nil { user.Routes = routes } else { user.Routes = []models.SettingRoute{} } c.SetData(user).Json() } // Register 用户注册 func (c *Controller) Register() { resp := c.service.SignUp(c.Ctx.Input.RequestBody) c.PostJson(resp) } // Users 获取全部用户信息 func (c *Controller) Users() { user := c.RequiredUser() if user == nil { return } req := vo.PageReq{} if !c.ReadBody(&req) { return } resp, err := c.service.Users(&req) if err != nil { logs.Warn("Users get fail: %v", err) c.ErrorJson(err) return } c.SetData(resp).Json() } // Update 获取全部用户信息 func (c *Controller) Update() { user := c.RequiredUser() if user == nil { return } req := models.User{} if !c.ReadBody(&req) { return } resp, err := c.service.Update(&req) if err != nil { logs.Warn("Users get fail: %v", err) c.ErrorJson(err) return } c.SetData(resp).Json() } // Update 获取全部用户信息 func (c *Controller) UpdateUserInfo() { user := c.RequiredUser() if user == nil { return } req := models.User{} if !c.ReadBody(&req) { return } if req.Id != user.Id { c.ErrorJson(errors.New("更新失败,无操作权限!")) return } resp, err := c.service.Update(&req) if err != nil { logs.Warn("Users get fail: %v", err) c.ErrorJson(err) return } c.SetSession("user", *resp) c.SetData(resp).Json() } // UpdatePassword Update 获取全部用户信息 func (c *Controller) UpdatePassword() { user := c.RequiredUser() if user == nil { return } req := vo.UserUpdatePassword{} if !c.ReadBody(&req) { return } req.Id = user.Id err := c.service.UpdatePassword(&req) if err != nil { logs.Warn("Users get fail: %v", err) c.ErrorJson(err) return } c.SetMsg("密码更新成功").Json() } // ResetPassword 重置密码 func (c *Controller) ResetPassword() { req := ResetPasswordReq{} if !c.ReadBody(&req) { return } err := c.service.ResetPassword(&req) if err != nil { logs.Warn("Users get fail: %v", err) c.ErrorJson(err) return } if req.AuthCode == "" { c.SetMsg("邮件发送成功!").Json() } else { c.SetMsg("密码修改成功!").Json() } } // GetDetail 获取全部用户信息 func (c *Controller) GetDetail() { user := c.RequiredUser() if user == nil { return } id, err := c.GetIntQuery("id") if err != nil { logs.Warn("Users get fail: %v", err) c.ErrorJson(err) return } query, err := c.service.GetDetail(id) if err != nil { logs.Warn("Users get fail: %v", err) c.ErrorJson(err) return } c.SetData(query).Json() }