提交 6dd70d2a 编写于 作者: Mr.奇淼('s avatar Mr.奇淼(

修复了api唯一key关联的bug,修复了角色删除失败的bug

上级 0cc15b5d
...@@ -41,7 +41,7 @@ func DeleteAuthority(c *gin.Context) { ...@@ -41,7 +41,7 @@ func DeleteAuthority(c *gin.Context) {
var a model.SysAuthority var a model.SysAuthority
_ = c.ShouldBindJSON(&a) _ = c.ShouldBindJSON(&a)
//删除角色之前需要判断是否有用户正在使用此角色 //删除角色之前需要判断是否有用户正在使用此角色
err := service.DeleteAuthority(a) err := service.DeleteAuthority(&a)
if err != nil { if err != nil {
response.FailWithMessage(fmt.Sprintf("删除失败,%v", err), c) response.FailWithMessage(fmt.Sprintf("删除失败,%v", err), c)
} else { } else {
......
package response package response
type PolicyPathResponse struct { type PolicyPathResponse struct {
Paths []string `json:"paths"` Paths []map[string]string `json:"paths"`
} }
...@@ -24,7 +24,7 @@ func CreateAuthority(auth model.SysAuthority) (err error, authority model.SysAut ...@@ -24,7 +24,7 @@ func CreateAuthority(auth model.SysAuthority) (err error, authority model.SysAut
// @param auth model.SysAuthority // @param auth model.SysAuthority
// @return error // @return error
// 删除角色 // 删除角色
func DeleteAuthority(auth model.SysAuthority) (err error) { func DeleteAuthority(auth *model.SysAuthority) (err error) {
err = global.GVA_DB.Where("authority_id = ?", auth.AuthorityId).Find(&model.SysUser{}).Error err = global.GVA_DB.Where("authority_id = ?", auth.AuthorityId).Find(&model.SysUser{}).Error
if err == nil { if err == nil {
err = errors.New("此角色有用户正在使用禁止删除") err = errors.New("此角色有用户正在使用禁止删除")
......
...@@ -17,7 +17,7 @@ import ( ...@@ -17,7 +17,7 @@ import (
// @param authorityId string // @param authorityId string
// @param casbinInfos []CasbinInfo // @param casbinInfos []CasbinInfo
// @return error // @return error
func UpdateCasbin(authorityId string, casbinInfos []request.CasbinInfo) error { func UpdateCasbin(authorityId string, casbinInfos []request.CasbinInfo) error {
ClearCasbin(0, authorityId) ClearCasbin(0, authorityId)
for _, v := range casbinInfos { for _, v := range casbinInfos {
cm := model.CasbinModel{ cm := model.CasbinModel{
...@@ -40,7 +40,7 @@ func UpdateCasbin(authorityId string, casbinInfos []request.CasbinInfo) error { ...@@ -40,7 +40,7 @@ func UpdateCasbin(authorityId string, casbinInfos []request.CasbinInfo) error {
// @auth (2020/04/05 20:22) // @auth (2020/04/05 20:22)
// @param cm model.CasbinModel // @param cm model.CasbinModel
// @return bool // @return bool
func AddCasbin(cm model.CasbinModel) bool { func AddCasbin(cm model.CasbinModel) bool {
e := Casbin() e := Casbin()
return e.AddPolicy(cm.AuthorityId, cm.Path, cm.Method) return e.AddPolicy(cm.AuthorityId, cm.Path, cm.Method)
} }
...@@ -53,9 +53,9 @@ func AddCasbin(cm model.CasbinModel) bool { ...@@ -53,9 +53,9 @@ func AddCasbin(cm model.CasbinModel) bool {
// @param oldMethod string // @param oldMethod string
// @param newMethod string // @param newMethod string
// @return error // @return error
func UpdateCasbinApi(oldPath string, newPath string, oldMethod string, newMethod string) error { func UpdateCasbinApi(oldPath string, newPath string, oldMethod string, newMethod string) error {
var cs []model.CasbinModel var cs []model.CasbinModel
err := global.GVA_DB.Table("casbin_rule").Where("v1 = ? AND v2 = ?", oldPath,oldMethod).Find(&cs).Updates(map[string]string{ err := global.GVA_DB.Table("casbin_rule").Where("v1 = ? AND v2 = ?", oldPath, oldMethod).Find(&cs).Updates(map[string]string{
"v1": newPath, "v1": newPath,
"v2": newMethod, "v2": newMethod,
}).Error }).Error
...@@ -67,14 +67,16 @@ func UpdateCasbinApi(oldPath string, newPath string, oldMethod string, newMetho ...@@ -67,14 +67,16 @@ func UpdateCasbinApi(oldPath string, newPath string, oldMethod string, newMetho
// @auth (2020/04/05 20:22) // @auth (2020/04/05 20:22)
// @param authorityId string // @param authorityId string
// @return []string // @return []string
func GetPolicyPathByAuthorityId(authorityId string) []string { func GetPolicyPathByAuthorityId(authorityId string) (pathMaps []map[string]string) {
e := Casbin() e := Casbin()
var pathList []string
list := e.GetFilteredPolicy(0, authorityId) list := e.GetFilteredPolicy(0, authorityId)
for _, v := range list { for _, v := range list {
pathList = append(pathList, v[1]) pathMaps = append(pathMaps, map[string]string{
"path": v[1],
"method": v[2],
})
} }
return pathList return pathMaps
} }
// @title ClearCasbin // @title ClearCasbin
...@@ -83,7 +85,7 @@ func GetPolicyPathByAuthorityId(authorityId string) []string { ...@@ -83,7 +85,7 @@ func GetPolicyPathByAuthorityId(authorityId string) []string {
// @param v int // @param v int
// @param p string // @param p string
// @return bool // @return bool
func ClearCasbin(v int, p ...string) bool { func ClearCasbin(v int, p ...string) bool {
e := Casbin() e := Casbin()
return e.RemoveFilteredPolicy(v, p...) return e.RemoveFilteredPolicy(v, p...)
...@@ -123,4 +125,4 @@ func ParamsMatchFunc(args ...interface{}) (interface{}, error) { ...@@ -123,4 +125,4 @@ func ParamsMatchFunc(args ...interface{}) (interface{}, error) {
name2 := args[1].(string) name2 := args[1].(string)
return (bool)(ParamsMatch(name1, name2)), nil return (bool)(ParamsMatch(name1, name2)), nil
} }
\ No newline at end of file
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
:props="apiDefaultProps" :props="apiDefaultProps"
default-expand-all default-expand-all
highlight-current highlight-current
node-key="path" node-key="onlyId"
ref="apiTree" ref="apiTree"
show-checkbox show-checkbox
></el-tree> ></el-tree>
...@@ -44,6 +44,7 @@ export default { ...@@ -44,6 +44,7 @@ export default {
const apiObj = new Object() const apiObj = new Object()
apis && apis &&
apis.map(item => { apis.map(item => {
item.onlyId = "p:"+item.path+"m:"+item.method
if (apiObj.hasOwnProperty(item.apiGroup)) { if (apiObj.hasOwnProperty(item.apiGroup)) {
apiObj[item.apiGroup].push(item) apiObj[item.apiGroup].push(item)
} else { } else {
...@@ -85,13 +86,16 @@ export default { ...@@ -85,13 +86,16 @@ export default {
// 获取api并整理成树结构 // 获取api并整理成树结构
const res2 = await getAllApis() const res2 = await getAllApis()
const apis = res2.data.apis const apis = res2.data.apis
this.apiTreeData = this.buildApiTree(apis) this.apiTreeData = this.buildApiTree(apis)
const res = await getPolicyPathByAuthorityId({ const res = await getPolicyPathByAuthorityId({
authorityId: this.row.authorityId authorityId: this.row.authorityId
}) })
this.activeUserId = this.row.authorityId this.activeUserId = this.row.authorityId
this.apiTreeIds = res.data.paths || [] this.apiTreeIds = []
res.data.paths&&res.data.paths.map(item=>{
this.apiTreeIds.push("p:"+item.path+"m:"+item.method)
})
} }
} }
</script> </script>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册