code: @Override
      public Iterator<String> getSpaces() {
          DuracloudUserDetails user = getCurrentUserDetails();
          if (isAdmin(user)) {
              return targetProvider.getSpaces();
          }
  
          waitForCache();
  
          List<String> spaces = new ArrayList<String>();
          for (String space : spaceACLMap.keySet()) {
              Map<String, AclType> acls = spaceACLMap.get(space);
              if (userHasAccess(user, acls) && !spaces.contains(space)) {
                  spaces.add(space);
              }
          }
  
          Collections.sort(spaces);
          return spaces.iterator();
      }
docs: This method passes through the call to getSpaces() for 'admin' users,
  and for 'users', only returns the list of 'open' spaces and those to
  which they have and ACL.
  
  @return spaces to which the user has read permissions