作者 唐旭辉

调整数据校验

@@ -175,7 +175,7 @@ func (c *RbacController) RoleGroupUpdate() { @@ -175,7 +175,7 @@ func (c *RbacController) RoleGroupUpdate() {
175 msg = protocol.BadRequestParam("10081") 175 msg = protocol.BadRequestParam("10081")
176 return 176 return
177 } 177 }
178 - roleinfo, err := serverbac.RoleGroupEdit(param.ID, param.Name) 178 + roleinfo, err := serverbac.RoleGroupEdit(companyid, param.ID, param.Name)
179 msg = protocol.NewReturnResponse(roleinfo, err) 179 msg = protocol.NewReturnResponse(roleinfo, err)
180 return 180 return
181 } 181 }
@@ -64,9 +64,7 @@ func (t *Role) ValidatePid() (*Role, error) { @@ -64,9 +64,7 @@ func (t *Role) ValidatePid() (*Role, error) {
64 if err != nil { 64 if err != nil {
65 return nil, err 65 return nil, err
66 } 66 }
67 -  
68 if roledata.DeleteAt.Unix() > 0 { 67 if roledata.DeleteAt.Unix() > 0 {
69 -  
70 return nil, errors.New("roledata Delete") 68 return nil, errors.New("roledata Delete")
71 } 69 }
72 if roledata.Types != ROLETYPES_GROUP { 70 if roledata.Types != ROLETYPES_GROUP {
@@ -15,6 +15,8 @@ var errmessge ErrorMap = map[string]string{ @@ -15,6 +15,8 @@ var errmessge ErrorMap = map[string]string{
15 "10008": "角色名称最多10个字符", 15 "10008": "角色名称最多10个字符",
16 "10009": "角色名称必填", 16 "10009": "角色名称必填",
17 "10081": "角色组名称必填", 17 "10081": "角色组名称必填",
  18 + "10082": "管理员组角色不能移出",
  19 + "10083": "不能将角色添加进管理员组",
18 //职位相关 20 //职位相关
19 "10011": "该职位已被使用无法删除", 21 "10011": "该职位已被使用无法删除",
20 "10012": "超过10级的职位限制,请重新选择", 22 "10012": "超过10级的职位限制,请重新选择",
@@ -90,54 +90,80 @@ func RoleDelete(param protocol.RequestRoleDelete) error { @@ -90,54 +90,80 @@ func RoleDelete(param protocol.RequestRoleDelete) error {
90 return nil 90 return nil
91 } 91 }
92 92
  93 +///编辑角色
93 func RoleEdit(param protocol.RequestRoleEdit) (*protocol.ResponseRoleInfo, error) { 94 func RoleEdit(param protocol.RequestRoleEdit) (*protocol.ResponseRoleInfo, error) {
94 var ( 95 var (
95 - role *models.Role  
96 - err error 96 + roleinfo *models.Role
  97 + err error
97 ) 98 )
98 - role, err = models.GetRoleById(param.ID) 99 + roleinfo, err = models.GetRoleById(param.ID)
99 if err != nil { 100 if err != nil {
100 e := fmt.Errorf("GetRoleById err:%s", err) 101 e := fmt.Errorf("GetRoleById err:%s", err)
101 log.Error(e.Error()) 102 log.Error(e.Error())
102 return nil, protocol.NewErrWithMessage("1", e) 103 return nil, protocol.NewErrWithMessage("1", e)
103 } 104 }
104 - if ok := role.IsDefaultRole(); ok && role.Types == models.ROLETYPES_ROLE {  
105 - return nil, protocol.NewErrWithMessage("10006")  
106 - }  
107 -  
108 - if role.CompanyId != param.CompanyID {  
109 - e := fmt.Errorf("role.CompanyId(%d) != param.CompanyID(%d)", role.CompanyId, param.CompanyID) 105 + if roleinfo.CompanyId != param.CompanyID {
  106 + e := fmt.Errorf("role.CompanyId(%d) != param.CompanyID(%d)", roleinfo.CompanyId, param.CompanyID)
110 log.Error(e.Error()) 107 log.Error(e.Error())
111 return nil, protocol.NewErrWithMessage("1", e) 108 return nil, protocol.NewErrWithMessage("1", e)
112 } 109 }
113 - if role.Name != param.Name { 110 + if ok := roleinfo.IsDefaultRole(); ok && roleinfo.Types == models.ROLETYPES_ROLE {
  111 + //默认角色不能编辑
  112 + return nil, protocol.NewErrWithMessage("10006")
  113 + }
  114 + if roleinfo.Name != param.Name {
114 ok := models.ExistRoleName(param.CompanyID, param.Name, param.Types) 115 ok := models.ExistRoleName(param.CompanyID, param.Name, param.Types)
115 if ok { 116 if ok {
116 return nil, protocol.NewErrWithMessage("10004") 117 return nil, protocol.NewErrWithMessage("10004")
117 } 118 }
118 - role.Name = param.Name 119 + roleinfo.Name = param.Name
119 } 120 }
120 -  
121 - role.Pid = param.Pid  
122 - if _, err = role.ValidatePid(); err != nil {  
123 - e := fmt.Errorf("ValidatePid err:%s", err)  
124 - log.Error(e.Error())  
125 - return nil, protocol.NewErrWithMessage("1", e) 121 + if roleinfo.Pid != param.Pid {
  122 + newParent, err := models.GetRoleById(param.Pid)
  123 + if err != nil {
  124 + log.Error("获取新父级数据失败;%s", err)
  125 + return nil, protocol.NewErrWithMessage("1")
  126 + }
  127 + if newParent.Types != models.ROLETYPES_GROUP {
  128 + log.Error("不是角色组")
  129 + return nil, protocol.NewErrWithMessage("1")
  130 + }
  131 + if newParent.CompanyId != roleinfo.CompanyId {
  132 + log.Error("角色组公司不匹配")
  133 + return nil, protocol.NewErrWithMessage("1")
  134 + }
  135 + if yes := newParent.IsDefaultRole(); yes {
  136 + log.Error("非默认组成员不能进主管组")
  137 + return nil, protocol.NewErrWithMessage("10083")
  138 + }
  139 + //获取原来的父级
  140 + var oldParent *models.Role
  141 + oldParent, err = models.GetRoleById(param.Pid)
  142 + if err != nil {
  143 + log.Error("获取父级数据失败;%s", err)
  144 + return nil, protocol.NewErrWithMessage("1")
  145 + }
  146 + if yes := oldParent.IsDefaultRole(); yes {
  147 + log.Error("默认角色组成员不能移动")
  148 + return nil, protocol.NewErrWithMessage("10082")
  149 + }
126 } 150 }
127 - if err = models.UpdateRoleById(role, []string{"Descript", "Name", "Pid"}); err != nil { 151 + roleinfo.Pid = param.Pid
  152 +
  153 + if err = models.UpdateRoleById(roleinfo, []string{"Descript", "Name", "Pid"}); err != nil {
128 e := fmt.Errorf("UpdateRoleById err:%s", err) 154 e := fmt.Errorf("UpdateRoleById err:%s", err)
129 log.Error(e.Error()) 155 log.Error(e.Error())
130 return nil, protocol.NewErrWithMessage("1", e) 156 return nil, protocol.NewErrWithMessage("1", e)
131 } 157 }
132 r := &protocol.ResponseRoleInfo{ 158 r := &protocol.ResponseRoleInfo{
133 - ID: role.Id,  
134 - Name: role.Name,  
135 - Types: role.Types, 159 + ID: roleinfo.Id,
  160 + Name: roleinfo.Name,
  161 + Types: roleinfo.Types,
136 } 162 }
137 return r, nil 163 return r, nil
138 } 164 }
139 165
140 -func RoleGroupEdit(id int64, name string) (*protocol.ResponseRoleInfo, error) { 166 +func RoleGroupEdit(companyid int64, id int64, name string) (*protocol.ResponseRoleInfo, error) {
141 var ( 167 var (
142 err error 168 err error
143 roleinfo *models.Role 169 roleinfo *models.Role
@@ -147,6 +173,10 @@ func RoleGroupEdit(id int64, name string) (*protocol.ResponseRoleInfo, error) { @@ -147,6 +173,10 @@ func RoleGroupEdit(id int64, name string) (*protocol.ResponseRoleInfo, error) {
147 log.Error("获取角色数据失败:%s", err) 173 log.Error("获取角色数据失败:%s", err)
148 return nil, protocol.NewErrWithMessage("1") 174 return nil, protocol.NewErrWithMessage("1")
149 } 175 }
  176 + if roleinfo.CompanyId != companyid {
  177 + log.Error("公司不一致")
  178 + return nil, protocol.NewErrWithMessage("1")
  179 + }
150 if roleinfo.Types != models.ROLETYPES_GROUP { 180 if roleinfo.Types != models.ROLETYPES_GROUP {
151 log.Error("不是角色组") 181 log.Error("不是角色组")
152 return nil, protocol.NewErrWithMessage("1") 182 return nil, protocol.NewErrWithMessage("1")