未验证 提交 e6366a9d 编写于 作者: S songzhibin97 提交者: GitHub

Fix #942 #957

* fix:#957
* fix:#942
上级 2327b9ef
...@@ -105,7 +105,7 @@ func (b *BaseApi) tokenNext(c *gin.Context, user system.SysUser) { ...@@ -105,7 +105,7 @@ func (b *BaseApi) tokenNext(c *gin.Context, user system.SysUser) {
// @Produce application/json // @Produce application/json
// @Param data body systemReq.Register true "用户名, 昵称, 密码, 角色ID" // @Param data body systemReq.Register true "用户名, 昵称, 密码, 角色ID"
// @Success 200 {object} response.Response{data=systemRes.SysUserResponse,msg=string} "用户注册账号,返回包括用户信息" // @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) { func (b *BaseApi) Register(c *gin.Context) {
var r systemReq.Register var r systemReq.Register
_ = c.ShouldBindJSON(&r) _ = c.ShouldBindJSON(&r)
...@@ -272,20 +272,34 @@ func (b *BaseApi) DeleteUser(c *gin.Context) { ...@@ -272,20 +272,34 @@ func (b *BaseApi) DeleteUser(c *gin.Context) {
// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "设置用户信息" // @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "设置用户信息"
// @Router /user/setUserInfo [put] // @Router /user/setUserInfo [put]
func (b *BaseApi) SetUserInfo(c *gin.Context) { func (b *BaseApi) SetUserInfo(c *gin.Context) {
var user system.SysUser var user systemReq.ChangeUserInfo
_ = c.ShouldBindJSON(&user) _ = c.ShouldBindJSON(&user)
user.Username = ""
user.Password = ""
user.AuthorityId = ""
if err := utils.Verify(user, utils.IdVerify); err != nil { if err := utils.Verify(user, utils.IdVerify); err != nil {
response.FailWithMessage(err.Error(), c) response.FailWithMessage(err.Error(), c)
return 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)) global.GVA_LOG.Error("设置失败!", zap.Error(err))
response.FailWithMessage("设置失败", c) response.FailWithMessage("设置失败", c)
} else { } else {
response.OkWithDetailed(gin.H{"userInfo": ReqUser}, "设置成功", c) response.OkWithMessage("设置成功", c)
} }
} }
...@@ -298,17 +312,22 @@ func (b *BaseApi) SetUserInfo(c *gin.Context) { ...@@ -298,17 +312,22 @@ func (b *BaseApi) SetUserInfo(c *gin.Context) {
// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "设置用户信息" // @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "设置用户信息"
// @Router /user/SetSelfInfo [put] // @Router /user/SetSelfInfo [put]
func (b *BaseApi) SetSelfInfo(c *gin.Context) { func (b *BaseApi) SetSelfInfo(c *gin.Context) {
var user system.SysUser var user systemReq.ChangeUserInfo
_ = c.ShouldBindJSON(&user) _ = c.ShouldBindJSON(&user)
user.Username = ""
user.Password = ""
user.AuthorityId = ""
user.ID = utils.GetUserID(c) 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)) global.GVA_LOG.Error("设置失败!", zap.Error(err))
response.FailWithMessage("设置失败", c) response.FailWithMessage("设置失败", c)
} else { } else {
response.OkWithDetailed(gin.H{"userInfo": ReqUser}, "设置成功", c) response.OkWithMessage("设置成功", c)
} }
} }
......
...@@ -17,7 +17,7 @@ func DefaultCasbin() []CasbinInfo { ...@@ -17,7 +17,7 @@ func DefaultCasbin() []CasbinInfo {
{Path: "/menu/getMenu", Method: "POST"}, {Path: "/menu/getMenu", Method: "POST"},
{Path: "/jwt/jsonInBlacklist", Method: "POST"}, {Path: "/jwt/jsonInBlacklist", Method: "POST"},
{Path: "/base/login", 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/changePassword", Method: "POST"},
{Path: "/user/setUserAuthority", Method: "POST"}, {Path: "/user/setUserAuthority", Method: "POST"},
{Path: "/user/setUserInfo", Method: "PUT"}, {Path: "/user/setUserInfo", Method: "PUT"},
......
package request package request
import model "github.com/flipped-aurora/gin-vue-admin/server/model/system"
// User register structure // User register structure
type Register struct { type Register struct {
Username string `json:"userName"` Username string `json:"userName"`
...@@ -35,3 +37,13 @@ type SetUserAuthorities struct { ...@@ -35,3 +37,13 @@ type SetUserAuthorities struct {
ID uint ID uint
AuthorityIds []string `json:"authorityIds"` // 角色ID 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;"`
}
...@@ -13,7 +13,7 @@ func (s *UserRouter) InitUserRouter(Router *gin.RouterGroup) { ...@@ -13,7 +13,7 @@ func (s *UserRouter) InitUserRouter(Router *gin.RouterGroup) {
userRouterWithoutRecord := Router.Group("user") userRouterWithoutRecord := Router.Group("user")
baseApi := v1.ApiGroupApp.SystemApiGroup.BaseApi baseApi := v1.ApiGroupApp.SystemApiGroup.BaseApi
{ {
userRouter.POST("register", baseApi.Register) // 用户注册账号 userRouter.POST("admin_register", baseApi.Register) // 管理员注册账号
userRouter.POST("changePassword", baseApi.ChangePassword) // 用户修改密码 userRouter.POST("changePassword", baseApi.ChangePassword) // 用户修改密码
userRouter.POST("setUserAuthority", baseApi.SetUserAuthority) // 设置用户权限 userRouter.POST("setUserAuthority", baseApi.SetUserAuthority) // 设置用户权限
userRouter.DELETE("deleteUser", baseApi.DeleteUser) // 删除用户 userRouter.DELETE("deleteUser", baseApi.DeleteUser) // 删除用户
......
...@@ -46,10 +46,10 @@ func (userService *UserService) Login(u *system.SysUser) (err error, userInter * ...@@ -46,10 +46,10 @@ func (userService *UserService) Login(u *system.SysUser) (err error, userInter *
var user system.SysUser var user system.SysUser
u.Password = utils.MD5V([]byte(u.Password)) 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 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 var am system.SysMenu
ferr := global.GVA_DB.First(&am,"name = ? AND authority_id = ?",user.Authority.DefaultRouter,user.AuthorityId).Error ferr := global.GVA_DB.First(&am, "name = ? AND authority_id = ?", user.Authority.DefaultRouter, user.AuthorityId).Error
if errors.Is(ferr,gorm.ErrRecordNotFound) { if errors.Is(ferr, gorm.ErrRecordNotFound) {
user.Authority.DefaultRouter = "404" user.Authority.DefaultRouter = "404"
} }
} }
...@@ -156,9 +156,8 @@ func (userService *UserService) DeleteUser(id int) (err error) { ...@@ -156,9 +156,8 @@ func (userService *UserService) DeleteUser(id int) (err error) {
//@param: reqUser model.SysUser //@param: reqUser model.SysUser
//@return: err error, user model.SysUser //@return: err error, user model.SysUser
func (userService *UserService) SetUserInfo(reqUser system.SysUser) (err error, user system.SysUser) { func (userService *UserService) SetUserInfo(req system.SysUser) error {
err = global.GVA_DB.Updates(&reqUser).Error return global.GVA_DB.Updates(&req).Error
return err, reqUser
} }
//@author: [piexlmax](https://github.com/piexlmax) //@author: [piexlmax](https://github.com/piexlmax)
...@@ -170,12 +169,12 @@ func (userService *UserService) SetUserInfo(reqUser system.SysUser) (err error, ...@@ -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) { func (userService *UserService) GetUserInfo(uuid uuid.UUID) (err error, user system.SysUser) {
var reqUser system.SysUser var reqUser system.SysUser
err = global.GVA_DB.Preload("Authorities").Preload("Authority").First(&reqUser, "uuid = ?", uuid).Error err = global.GVA_DB.Preload("Authorities").Preload("Authority").First(&reqUser, "uuid = ?", uuid).Error
if err!=nil{ if err != nil {
return err, reqUser return err, reqUser
} }
var am system.SysMenu var am system.SysMenu
ferr := global.GVA_DB.First(&am,"name = ? AND authority_id = ?",reqUser.Authority.DefaultRouter,reqUser.AuthorityId).Error ferr := global.GVA_DB.First(&am, "name = ? AND authority_id = ?", reqUser.Authority.DefaultRouter, reqUser.AuthorityId).Error
if errors.Is(ferr,gorm.ErrRecordNotFound) { if errors.Is(ferr, gorm.ErrRecordNotFound) {
reqUser.Authority.DefaultRouter = "404" reqUser.Authority.DefaultRouter = "404"
} }
return err, reqUser return err, reqUser
......
...@@ -22,7 +22,7 @@ func (a *api) Initialize() error { ...@@ -22,7 +22,7 @@ func (a *api) Initialize() error {
{ApiGroup: "jwt", Method: "POST", Path: "/jwt/jsonInBlacklist", Description: "jwt加入黑名单(退出,必选)"}, {ApiGroup: "jwt", Method: "POST", Path: "/jwt/jsonInBlacklist", Description: "jwt加入黑名单(退出,必选)"},
{ApiGroup: "系统用户", Method: "DELETE", Path: "/user/deleteUser", Description: "删除用户"}, {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: "POST", Path: "/user/getUserList", Description: "获取用户列表"},
{ApiGroup: "系统用户", Method: "PUT", Path: "/user/setUserInfo", Description: "设置用户信息"}, {ApiGroup: "系统用户", Method: "PUT", Path: "/user/setUserInfo", Description: "设置用户信息"},
{ApiGroup: "系统用户", Method: "PUT", Path: "/user/setSelfInfo", Description: "设置自身信息(必选)"}, {ApiGroup: "系统用户", Method: "PUT", Path: "/user/setSelfInfo", Description: "设置自身信息(必选)"},
......
...@@ -19,7 +19,7 @@ func (c *casbin) TableName() string { ...@@ -19,7 +19,7 @@ func (c *casbin) TableName() string {
func (c *casbin) Initialize() error { func (c *casbin) Initialize() error {
entities := []adapter.CasbinRule{ entities := []adapter.CasbinRule{
{PType: "p", V0: "888", V1: "/base/login", V2: "POST"}, {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/createApi", V2: "POST"},
{PType: "p", V0: "888", V1: "/api/getApiList", V2: "POST"}, {PType: "p", V0: "888", V1: "/api/getApiList", V2: "POST"},
...@@ -125,7 +125,7 @@ func (c *casbin) Initialize() error { ...@@ -125,7 +125,7 @@ func (c *casbin) Initialize() error {
{PType: "p", V0: "888", V1: "/authorityBtn/canRemoveAuthorityBtn", V2: "POST"}, {PType: "p", V0: "888", V1: "/authorityBtn/canRemoveAuthorityBtn", V2: "POST"},
{PType: "p", V0: "8881", V1: "/base/login", 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/createApi", V2: "POST"},
{PType: "p", V0: "8881", V1: "/api/getApiList", V2: "POST"}, {PType: "p", V0: "8881", V1: "/api/getApiList", V2: "POST"},
{PType: "p", V0: "8881", V1: "/api/getApiById", V2: "POST"}, {PType: "p", V0: "8881", V1: "/api/getApiById", V2: "POST"},
...@@ -164,7 +164,7 @@ func (c *casbin) Initialize() error { ...@@ -164,7 +164,7 @@ func (c *casbin) Initialize() error {
{PType: "p", V0: "8881", V1: "/user/getUserInfo", V2: "GET"}, {PType: "p", V0: "8881", V1: "/user/getUserInfo", V2: "GET"},
{PType: "p", V0: "9528", V1: "/base/login", V2: "POST"}, {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/createApi", V2: "POST"},
{PType: "p", V0: "9528", V1: "/api/getApiList", V2: "POST"}, {PType: "p", V0: "9528", V1: "/api/getApiList", V2: "POST"},
{PType: "p", V0: "9528", V1: "/api/getApiById", V2: "POST"}, {PType: "p", V0: "9528", V1: "/api/getApiById", V2: "POST"},
......
...@@ -29,7 +29,7 @@ export const captcha = (data) => { ...@@ -29,7 +29,7 @@ export const captcha = (data) => {
// @Router /base/resige [post] // @Router /base/resige [post]
export const register = (data) => { export const register = (data) => {
return service({ return service({
url: '/user/register', url: '/user/admin_register',
method: 'post', method: 'post',
data: data data: data
}) })
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册