未验证 提交 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) {
// @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)
}
}
......
......@@ -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"},
......
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;"`
}
......@@ -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) // 删除用户
......
......@@ -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
......
......@@ -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: "设置自身信息(必选)"},
......
......@@ -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"},
......
......@@ -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
})
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册