diff --git a/logic/acls.go b/logic/acls.go index 53b878a3..4902da63 100644 --- a/logic/acls.go +++ b/logic/acls.go @@ -654,6 +654,36 @@ func IsPeerAllowed(node, peer models.Node, checkDefaultPolicy bool) bool { } return false } + +func RemoveUserFromAclPolicy(userName string) { + acls := ListAcls() + for _, acl := range acls { + delete := false + update := false + if acl.RuleType == models.UserPolicy { + for i, srcI := range acl.Src { + if srcI.ID == models.UserAclID && srcI.Value == userName { + if len(acl.Src) == 1 { + // delete policy + delete = true + break + } else { + acl.Src = append(acl.Src[:i], acl.Src[i+1:]...) + update = true + } + } + } + if delete { + DeleteAcl(acl) + continue + } + if update { + UpsertAcl(acl) + } + } + } +} + func RemoveNodeFromAclPolicy(node models.Node) { var nodeID string if node.IsStatic { diff --git a/logic/auth.go b/logic/auth.go index 031e5fd1..7d524a6e 100644 --- a/logic/auth.go +++ b/logic/auth.go @@ -359,6 +359,7 @@ func DeleteUser(user string) (bool, error) { if err != nil { return false, err } + go RemoveUserFromAclPolicy(user) return true, nil }