Browse Source

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

main
pixel 5 years ago
parent
commit
6dd70d2a76
  1. 2
      server/api/v1/sys_authority.go
  2. 2
      server/model/response/sys_casbin.go
  3. 2
      server/service/sys_authority.go
  4. 22
      server/service/sys_casbin.go
  5. 10
      web/src/view/superAdmin/authority/components/apis.vue

2
server/api/v1/sys_authority.go

@ -41,7 +41,7 @@ func DeleteAuthority(c *gin.Context) {
var a model.SysAuthority
_ = c.ShouldBindJSON(&a)
//删除角色之前需要判断是否有用户正在使用此角色
err := service.DeleteAuthority(a)
err := service.DeleteAuthority(&a)
if err != nil {
response.FailWithMessage(fmt.Sprintf("删除失败,%v", err), c)
} else {

2
server/model/response/sys_casbin.go

@ -1,5 +1,5 @@
package response
type PolicyPathResponse struct {
Paths []string `json:"paths"`
Paths []map[string]string `json:"paths"`
}

2
server/service/sys_authority.go

@ -24,7 +24,7 @@ func CreateAuthority(auth model.SysAuthority) (err error, authority model.SysAut
// @param auth model.SysAuthority
// @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
if err == nil {
err = errors.New("此角色有用户正在使用禁止删除")

22
server/service/sys_casbin.go

@ -17,7 +17,7 @@ import (
// @param authorityId string
// @param casbinInfos []CasbinInfo
// @return error
func UpdateCasbin(authorityId string, casbinInfos []request.CasbinInfo) error {
func UpdateCasbin(authorityId string, casbinInfos []request.CasbinInfo) error {
ClearCasbin(0, authorityId)
for _, v := range casbinInfos {
cm := model.CasbinModel{
@ -40,7 +40,7 @@ func UpdateCasbin(authorityId string, casbinInfos []request.CasbinInfo) error {
// @auth (2020/04/05 20:22)
// @param cm model.CasbinModel
// @return bool
func AddCasbin(cm model.CasbinModel) bool {
func AddCasbin(cm model.CasbinModel) bool {
e := Casbin()
return e.AddPolicy(cm.AuthorityId, cm.Path, cm.Method)
}
@ -53,9 +53,9 @@ func AddCasbin(cm model.CasbinModel) bool {
// @param oldMethod string
// @param newMethod string
// @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
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,
"v2": newMethod,
}).Error
@ -67,14 +67,16 @@ func UpdateCasbinApi(oldPath string, newPath string, oldMethod string, newMetho
// @auth (2020/04/05 20:22)
// @param authorityId string
// @return []string
func GetPolicyPathByAuthorityId(authorityId string) []string {
func GetPolicyPathByAuthorityId(authorityId string) (pathMaps []map[string]string) {
e := Casbin()
var pathList []string
list := e.GetFilteredPolicy(0, authorityId)
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
@ -83,7 +85,7 @@ func GetPolicyPathByAuthorityId(authorityId string) []string {
// @param v int
// @param p string
// @return bool
func ClearCasbin(v int, p ...string) bool {
func ClearCasbin(v int, p ...string) bool {
e := Casbin()
return e.RemoveFilteredPolicy(v, p...)
@ -123,4 +125,4 @@ func ParamsMatchFunc(args ...interface{}) (interface{}, error) {
name2 := args[1].(string)
return (bool)(ParamsMatch(name1, name2)), nil
}
}

10
web/src/view/superAdmin/authority/components/apis.vue

@ -9,7 +9,7 @@
:props="apiDefaultProps"
default-expand-all
highlight-current
node-key="path"
node-key="onlyId"
ref="apiTree"
show-checkbox
></el-tree>
@ -44,6 +44,7 @@ export default {
const apiObj = new Object()
apis &&
apis.map(item => {
item.onlyId = "p:"+item.path+"m:"+item.method
if (apiObj.hasOwnProperty(item.apiGroup)) {
apiObj[item.apiGroup].push(item)
} else {
@ -85,13 +86,16 @@ export default {
// api
const res2 = await getAllApis()
const apis = res2.data.apis
this.apiTreeData = this.buildApiTree(apis)
const res = await getPolicyPathByAuthorityId({
authorityId: 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>

Loading…
Cancel
Save