// 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, stc.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] = true 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 }