package controllers import ( "basic.com/dbapi.git" "github.com/gin-gonic/gin" "net/http" "time" "webserver/extend/code" "webserver/extend/util" "webserver/middlewares/auth" ) type UserController struct { } type UserVo struct { UserName string `json:"username"` Password string `json:"password"` } // @Summary 用户登录 // @Description 用户登录 // @Accept x-www-form-urlencoded // @Produce json // @Tags 用户 // @Param username formData string true "用户名" // @Param password formData string true "密码" // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}" // @Router /data/api-u/sys/login [post] func (uc UserController) Login(c *gin.Context) { userName := c.PostForm("username") password := c.PostForm("password") if userName == "" || password == "" { util.ResponseFormat(c,code.RequestParamError,"参数有误") return } var api dbapi.UserApi flag, data := api.Login(userName, password) if flag { authDriver := auth.GenerateAuthDriver() loginedM := util.Struct2Map(data) tokenM := make(map[string]interface{},2) tokenM["id"] = loginedM["id"] tokenM["username"] = loginedM["username"] tokenM["permissions"] = loginedM["permissions"] tokenStr := (*authDriver).Login(c.Request, c.Writer, tokenM) userId := loginedM["id"].(string) auth.RemoveOutUser(userId) c.JSON(200,map[string]interface{}{ "userInfo":loginedM, "access_token":tokenStr, "refresh_token":tokenStr, "scope":"app", "token_type":"Bearer", "expires_in":time.Now().Add(time.Hour * 8).Unix(), }) } else { c.JSON(500,"用户名或密码错误") } } // @Security ApiKeyAuth // @Summary 修改当前登录用户的密码 // @Description 修改当前登录用户的密码 // @Accept x-www-form-urlencoded // @Produce json // @Tags 用户 // @Param oldPwd formData string true "旧密码" // @Param newPwd formData string true "新密码" // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}" // @Router /data/api-u/users/updatePwd [post] func (uc UserController) UpdatePwd(c *gin.Context) { oldPwd := c.PostForm("oldPwd") newPwd := c.PostForm("newPwd") if oldPwd == "" || newPwd == "" { util.ResponseFormat(c,code.RequestParamError,"参数有误") return } authDriver := auth.GenerateAuthDriver() userM := (*authDriver).User(c) userId := userM["id"].(string) var userApi dbapi.UserApi if b,_ :=userApi.UpdatePwd(userId, oldPwd, newPwd);b { util.ResponseFormat(c,code.UpdateSuccess,"更新成功") } else { util.ResponseFormat(c,code.AccountPassUnmatch,"密码有误") } } // @Security ApiKeyAuth // @Summary 获取当前用户信息 // @Description 获取当前用户信息 // @Accept json // @Produce json // @Tags 用户 // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}" // @Router /data/api-u/users/current [get] func (uc UserController) Current(c *gin.Context) { authDriver := auth.GenerateAuthDriver() user := (*authDriver).User(c) if user !=nil { c.JSON(http.StatusOK,user) } else { c.JSON(http.StatusUnauthorized,"") } } // @Router /data/api-u/sys/refresh_token [post] func (uc UserController) RefreshToken(c *gin.Context){ } // @Router /data/api-u/sys/logout [get] func (uc UserController) Logout(c *gin.Context){ c.JSON(http.StatusOK,"退出成功") } // @Security ApiKeyAuth // @Summary 查找所有用户 // @Description 查找所有用户 // @Accept json // @Produce json // @Tags 用户 // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" // @Router /data/api-u/users/findAllUser [get] func (uc UserController) FindAllUser(c *gin.Context) { authDriver := auth.GenerateAuthDriver() userM := (*authDriver).User(c) userId := userM["id"].(string) var api dbapi.UserApi b,d := api.FindAllUser(userId) if b { util.ResponseFormat(c,code.Success,d) } else { util.ResponseFormat(c,code.ComError,"") } } type UserEditVo struct { Id string `json:"id"` UserName string `json:"username"` NewPwd string `json:"newPwd"` MenuIds []string `json:"menuIds"` } // @Security ApiKeyAuth // @Summary 编辑此用户,返回此用户的权限菜单 // @Description 编辑此用户,返回此用户的权限菜单 // @Accept x-www-form-urlencoded // @Produce json // @Tags 用户 // @Param userId formData string true "用户id" // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" // @Router /data/api-u/users/findById [post] func (uc UserController) FindById(c *gin.Context) { userId := c.PostForm("userId") if userId == "" { util.ResponseFormat(c,code.RequestParamError,"参数有误") return } var api dbapi.UserApi b, d := api.FindById(userId) if b { util.ResponseFormat(c,code.Success,d) } else { util.ResponseFormat(c,code.ComError,"") } } // @Security ApiKeyAuth // @Summary 更新用户名,密码和菜单权限 // @Description 更新用户名,密码和菜单权限 // @Accept json // @Produce json // @Tags 用户 // @Param userVo body controllers.UserEditVo true "用户及权限信息" // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" // @Router /data/api-v/users/saveAuth [post] func (uc UserController) SaveAuth(c *gin.Context) { var userEditVo UserEditVo err := c.BindJSON(&userEditVo) if err !=nil || userEditVo.Id =="" || userEditVo.UserName == "" { util.ResponseFormat(c,code.RequestParamError,"") return } paramBody := util.Struct2Map(userEditVo) var api dbapi.UserApi b, d := api.SaveAuth(paramBody) if b { auth.SetOutUser(userEditVo.Id) util.ResponseFormat(c,code.UpdateSuccess,d) } else { util.ResponseFormat(c,code.UpdateFail,"保存失败") } }