fix acls cache

This commit is contained in:
abhishek9686 2024-11-07 21:55:19 +04:00
parent 163bc9e620
commit 574598a2a3

View file

@ -392,18 +392,19 @@ func listAcls() (acls []models.Acl) {
// ListUserPolicies - lists all acl policies enforced on an user
func ListUserPolicies(u models.User) []models.Acl {
acls := listAcls()
for _, acl := range acls {
allAcls := listAcls()
userAcls := []models.Acl{}
for _, acl := range allAcls {
if acl.RuleType == models.UserPolicy {
srcMap := convAclTagToValueMap(acl.Src)
if _, ok := srcMap[u.UserName]; ok {
acls = append(acls, acl)
userAcls = append(userAcls, acl)
} else {
// check for user groups
for gID := range u.UserGroups {
if _, ok := srcMap[gID.String()]; ok {
acls = append(acls, acl)
userAcls = append(userAcls, acl)
break
}
}
@ -411,59 +412,61 @@ func ListUserPolicies(u models.User) []models.Acl {
}
}
return acls
return userAcls
}
// listPoliciesOfUser - lists all user acl policies applied to user in an network
func listPoliciesOfUser(user models.User, netID models.NetworkID) []models.Acl {
acls := listAcls()
for _, acl := range acls {
allAcls := listAcls()
userAcls := []models.Acl{}
for _, acl := range allAcls {
if acl.NetworkID == netID && acl.RuleType == models.UserPolicy {
srcMap := convAclTagToValueMap(acl.Src)
if _, ok := srcMap[user.UserName]; ok {
acls = append(acls, acl)
userAcls = append(userAcls, acl)
continue
}
for netRole := range user.NetworkRoles {
if _, ok := srcMap[netRole.String()]; ok {
acls = append(acls, acl)
userAcls = append(userAcls, acl)
continue
}
}
for userG := range user.UserGroups {
if _, ok := srcMap[userG.String()]; ok {
acls = append(acls, acl)
userAcls = append(userAcls, acl)
continue
}
}
}
}
return acls
return userAcls
}
// listDevicePolicies - lists all device policies in a network
func listDevicePolicies(netID models.NetworkID) []models.Acl {
acls := listAcls()
for _, acl := range acls {
allAcls := listAcls()
deviceAcls := []models.Acl{}
for _, acl := range allAcls {
if acl.NetworkID == netID && acl.RuleType == models.DevicePolicy {
acls = append(acls, acl)
deviceAcls = append(deviceAcls, acl)
}
}
return acls
return deviceAcls
}
// ListAcls - lists all acl policies
func ListAcls(netID models.NetworkID) ([]models.Acl, error) {
acls := listAcls()
for _, acl := range acls {
allAcls := listAcls()
netAcls := []models.Acl{}
for _, acl := range allAcls {
if acl.NetworkID == netID {
acls = append(acls, acl)
netAcls = append(netAcls, acl)
}
}
return acls, nil
return netAcls, nil
}
func convAclTagToValueMap(acltags []models.AclPolicyTag) map[string]struct{} {