// GetWhoUseAPermission : Return all the users that have the given permission to the given resource func GetWhoUseAPermission(el *en.EntityManager, resourceName string, permission string) PermissionSet { if el == nil { return nil } err := en.IsEntityNameValid(resourceName) if err != nil { return nil } data, err := el.GetPropertyAttachedToEntity(resourceName, defs.AclPropertyName) if err != nil { return nil } p := make(PermissionSet) acl, ok := data.(*Acl) if ok == false { return p } for name := range acl.Permissions { pVec, _ := GetUserPermissions(el, name, resourceName) for v := range pVec { if string(v) == permission { p[name] = "" break } } } for name := range p { groupMembers := el.GetGroupUsers(name) for _, name1 := range groupMembers { p[name1] = true } } logger.Trace.Println("Who uses permission:", permission, "results:", p) return p }