diff --git a/server/api/v1/system/sys_user.go b/server/api/v1/system/sys_user.go index 6da7540fdaa97aa78dd917b67a7df8522c76d95a..55749fd00d15758f78fd24a2ed101ada95edab30 100644 --- a/server/api/v1/system/sys_user.go +++ b/server/api/v1/system/sys_user.go @@ -105,7 +105,7 @@ func (b *BaseApi) tokenNext(c *gin.Context, user system.SysUser) { // @Produce application/json // @Param data body systemReq.Register true "用户名, 昵称, 密码, 角色ID" // @Success 200 {object} response.Response{data=systemRes.SysUserResponse,msg=string} "用户注册账号,返回包括用户信息" -// @Router /user/register [post] +// @Router /user/admin_register [post] func (b *BaseApi) Register(c *gin.Context) { var r systemReq.Register _ = c.ShouldBindJSON(&r) @@ -272,20 +272,34 @@ func (b *BaseApi) DeleteUser(c *gin.Context) { // @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "设置用户信息" // @Router /user/setUserInfo [put] func (b *BaseApi) SetUserInfo(c *gin.Context) { - var user system.SysUser + var user systemReq.ChangeUserInfo _ = c.ShouldBindJSON(&user) - user.Username = "" - user.Password = "" - user.AuthorityId = "" if err := utils.Verify(user, utils.IdVerify); err != nil { response.FailWithMessage(err.Error(), c) return } - if err, ReqUser := userService.SetUserInfo(user); err != nil { + + if len(user.AuthorityIds) != 0 { + err := userService.SetUserAuthorities(user.ID, user.AuthorityIds) + if err != nil { + global.GVA_LOG.Error("设置失败!", zap.Error(err)) + response.FailWithMessage("设置失败", c) + } + } + + if err := userService.SetUserInfo(system.SysUser{ + GVA_MODEL: global.GVA_MODEL{ + ID: user.ID, + }, + NickName: user.NickName, + HeaderImg: user.HeaderImg, + Phone: user.Phone, + Email: user.Email, + }); err != nil { global.GVA_LOG.Error("设置失败!", zap.Error(err)) response.FailWithMessage("设置失败", c) } else { - response.OkWithDetailed(gin.H{"userInfo": ReqUser}, "设置成功", c) + response.OkWithMessage("设置成功", c) } } @@ -298,17 +312,22 @@ func (b *BaseApi) SetUserInfo(c *gin.Context) { // @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "设置用户信息" // @Router /user/SetSelfInfo [put] func (b *BaseApi) SetSelfInfo(c *gin.Context) { - var user system.SysUser + var user systemReq.ChangeUserInfo _ = c.ShouldBindJSON(&user) - user.Username = "" - user.Password = "" - user.AuthorityId = "" user.ID = utils.GetUserID(c) - if err, ReqUser := userService.SetUserInfo(user); err != nil { + if err := userService.SetUserInfo(system.SysUser{ + GVA_MODEL: global.GVA_MODEL{ + ID: user.ID, + }, + NickName: user.NickName, + HeaderImg: user.HeaderImg, + Phone: user.Phone, + Email: user.Email, + }); err != nil { global.GVA_LOG.Error("设置失败!", zap.Error(err)) response.FailWithMessage("设置失败", c) } else { - response.OkWithDetailed(gin.H{"userInfo": ReqUser}, "设置成功", c) + response.OkWithMessage("设置成功", c) } } diff --git a/server/model/system/request/sys_casbin.go b/server/model/system/request/sys_casbin.go index d0031dcff4c5d08eab48fa8eb7e429193ea9470b..b07ac5674cc8459de9f464c215ef5cb63c1c2459 100644 --- a/server/model/system/request/sys_casbin.go +++ b/server/model/system/request/sys_casbin.go @@ -17,7 +17,7 @@ func DefaultCasbin() []CasbinInfo { {Path: "/menu/getMenu", Method: "POST"}, {Path: "/jwt/jsonInBlacklist", Method: "POST"}, {Path: "/base/login", Method: "POST"}, - {Path: "/user/register", Method: "POST"}, + {Path: "/user/admin_register", Method: "POST"}, {Path: "/user/changePassword", Method: "POST"}, {Path: "/user/setUserAuthority", Method: "POST"}, {Path: "/user/setUserInfo", Method: "PUT"}, diff --git a/server/model/system/request/sys_user.go b/server/model/system/request/sys_user.go index c03807e166036af93749c56069d494d76d05e1de..8597f97c2f900831a7670f3287251010904e223e 100644 --- a/server/model/system/request/sys_user.go +++ b/server/model/system/request/sys_user.go @@ -1,5 +1,7 @@ package request +import model "github.com/flipped-aurora/gin-vue-admin/server/model/system" + // User register structure type Register struct { Username string `json:"userName"` @@ -35,3 +37,13 @@ type SetUserAuthorities struct { ID uint AuthorityIds []string `json:"authorityIds"` // 角色ID } + +type ChangeUserInfo struct { + ID uint `gorm:"primarykey"` // 主键ID + NickName string `json:"nickName" gorm:"default:系统用户;comment:用户昵称"` // 用户昵称 + Phone string `json:"phone" gorm:"comment:用户手机号"` // 用户角色ID + AuthorityIds []string `json:"authorityIds" gorm:"-"` // 角色ID + Email string `json:"email" gorm:"comment:用户邮箱"` // 用户邮箱 + HeaderImg string `json:"headerImg" gorm:"default:https://qmplusimg.henrongyi.top/gva_header.jpg;comment:用户头像"` // 用户头像 + Authorities []model.SysAuthority `json:"-" gorm:"many2many:sys_user_authority;"` +} diff --git a/server/router/system/sys_user.go b/server/router/system/sys_user.go index 49b48424902e66ef824e758551de80f3e5be214b..9a09176ccce9a5864bbd304eaf1c98764bc85221 100644 --- a/server/router/system/sys_user.go +++ b/server/router/system/sys_user.go @@ -13,7 +13,7 @@ func (s *UserRouter) InitUserRouter(Router *gin.RouterGroup) { userRouterWithoutRecord := Router.Group("user") baseApi := v1.ApiGroupApp.SystemApiGroup.BaseApi { - userRouter.POST("register", baseApi.Register) // 用户注册账号 + userRouter.POST("admin_register", baseApi.Register) // 管理员注册账号 userRouter.POST("changePassword", baseApi.ChangePassword) // 用户修改密码 userRouter.POST("setUserAuthority", baseApi.SetUserAuthority) // 设置用户权限 userRouter.DELETE("deleteUser", baseApi.DeleteUser) // 删除用户 diff --git a/server/service/system/sys_user.go b/server/service/system/sys_user.go index 22bfb08762e1e425c6b9a26454a0647fb061609f..57fecf3be9cf76c4a7edfe0d038300229bee8d98 100644 --- a/server/service/system/sys_user.go +++ b/server/service/system/sys_user.go @@ -46,10 +46,10 @@ func (userService *UserService) Login(u *system.SysUser) (err error, userInter * var user system.SysUser u.Password = utils.MD5V([]byte(u.Password)) err = global.GVA_DB.Where("username = ? AND password = ?", u.Username, u.Password).Preload("Authorities").Preload("Authority").First(&user).Error - if err == nil{ + if err == nil { var am system.SysMenu - ferr := global.GVA_DB.First(&am,"name = ? AND authority_id = ?",user.Authority.DefaultRouter,user.AuthorityId).Error - if errors.Is(ferr,gorm.ErrRecordNotFound) { + ferr := global.GVA_DB.First(&am, "name = ? AND authority_id = ?", user.Authority.DefaultRouter, user.AuthorityId).Error + if errors.Is(ferr, gorm.ErrRecordNotFound) { user.Authority.DefaultRouter = "404" } } @@ -156,9 +156,8 @@ func (userService *UserService) DeleteUser(id int) (err error) { //@param: reqUser model.SysUser //@return: err error, user model.SysUser -func (userService *UserService) SetUserInfo(reqUser system.SysUser) (err error, user system.SysUser) { - err = global.GVA_DB.Updates(&reqUser).Error - return err, reqUser +func (userService *UserService) SetUserInfo(req system.SysUser) error { + return global.GVA_DB.Updates(&req).Error } //@author: [piexlmax](https://github.com/piexlmax) @@ -170,12 +169,12 @@ func (userService *UserService) SetUserInfo(reqUser system.SysUser) (err error, func (userService *UserService) GetUserInfo(uuid uuid.UUID) (err error, user system.SysUser) { var reqUser system.SysUser err = global.GVA_DB.Preload("Authorities").Preload("Authority").First(&reqUser, "uuid = ?", uuid).Error - if err!=nil{ + if err != nil { return err, reqUser } var am system.SysMenu - ferr := global.GVA_DB.First(&am,"name = ? AND authority_id = ?",reqUser.Authority.DefaultRouter,reqUser.AuthorityId).Error - if errors.Is(ferr,gorm.ErrRecordNotFound) { + ferr := global.GVA_DB.First(&am, "name = ? AND authority_id = ?", reqUser.Authority.DefaultRouter, reqUser.AuthorityId).Error + if errors.Is(ferr, gorm.ErrRecordNotFound) { reqUser.Authority.DefaultRouter = "404" } return err, reqUser diff --git a/server/source/system/api.go b/server/source/system/api.go index ad3e1a4af388711ddb4ea43bd620208c2a0ea415..63274e5ff22b365cc8032da1d5a3b41fee643b79 100644 --- a/server/source/system/api.go +++ b/server/source/system/api.go @@ -22,7 +22,7 @@ func (a *api) Initialize() error { {ApiGroup: "jwt", Method: "POST", Path: "/jwt/jsonInBlacklist", Description: "jwt加入黑名单(退出,必选)"}, {ApiGroup: "系统用户", Method: "DELETE", Path: "/user/deleteUser", Description: "删除用户"}, - {ApiGroup: "系统用户", Method: "POST", Path: "/user/register", Description: "用户注册"}, + {ApiGroup: "系统用户", Method: "POST", Path: "/user/admin_register", Description: "用户注册"}, {ApiGroup: "系统用户", Method: "POST", Path: "/user/getUserList", Description: "获取用户列表"}, {ApiGroup: "系统用户", Method: "PUT", Path: "/user/setUserInfo", Description: "设置用户信息"}, {ApiGroup: "系统用户", Method: "PUT", Path: "/user/setSelfInfo", Description: "设置自身信息(必选)"}, diff --git a/server/source/system/casbin.go b/server/source/system/casbin.go index 98135298495b9d83d205f55deea8a70fc5e79b5a..15cf431de412ade49224b18d0c932100995e0a2c 100644 --- a/server/source/system/casbin.go +++ b/server/source/system/casbin.go @@ -19,7 +19,7 @@ func (c *casbin) TableName() string { func (c *casbin) Initialize() error { entities := []adapter.CasbinRule{ {PType: "p", V0: "888", V1: "/base/login", V2: "POST"}, - {PType: "p", V0: "888", V1: "/user/register", V2: "POST"}, + {PType: "p", V0: "888", V1: "/user/admin_register", V2: "POST"}, {PType: "p", V0: "888", V1: "/api/createApi", V2: "POST"}, {PType: "p", V0: "888", V1: "/api/getApiList", V2: "POST"}, @@ -125,7 +125,7 @@ func (c *casbin) Initialize() error { {PType: "p", V0: "888", V1: "/authorityBtn/canRemoveAuthorityBtn", V2: "POST"}, {PType: "p", V0: "8881", V1: "/base/login", V2: "POST"}, - {PType: "p", V0: "8881", V1: "/user/register", V2: "POST"}, + {PType: "p", V0: "8881", V1: "/user/admin_register", V2: "POST"}, {PType: "p", V0: "8881", V1: "/api/createApi", V2: "POST"}, {PType: "p", V0: "8881", V1: "/api/getApiList", V2: "POST"}, {PType: "p", V0: "8881", V1: "/api/getApiById", V2: "POST"}, @@ -164,7 +164,7 @@ func (c *casbin) Initialize() error { {PType: "p", V0: "8881", V1: "/user/getUserInfo", V2: "GET"}, {PType: "p", V0: "9528", V1: "/base/login", V2: "POST"}, - {PType: "p", V0: "9528", V1: "/user/register", V2: "POST"}, + {PType: "p", V0: "9528", V1: "/user/admin_register", V2: "POST"}, {PType: "p", V0: "9528", V1: "/api/createApi", V2: "POST"}, {PType: "p", V0: "9528", V1: "/api/getApiList", V2: "POST"}, {PType: "p", V0: "9528", V1: "/api/getApiById", V2: "POST"}, diff --git a/web/src/api/user.js b/web/src/api/user.js index ab9c634abd86edb08bfd25cdf02f07e976fdff0a..befd20edd8652b74b30445f0fc5b3d1d838691ca 100644 --- a/web/src/api/user.js +++ b/web/src/api/user.js @@ -29,7 +29,7 @@ export const captcha = (data) => { // @Router /base/resige [post] export const register = (data) => { return service({ - url: '/user/register', + url: '/user/admin_register', method: 'post', data: data })