@Test public void testAggregates() { Map<Long, Set<Long>> aggregation = ImmutableMap.<Long, Set<Long>>of( Permissions.READ, ImmutableSet.of(Permissions.READ_NODE, Permissions.READ_PROPERTY), Permissions.SET_PROPERTY, ImmutableSet.of(Permissions.ADD_PROPERTY, Permissions.MODIFY_PROPERTY, Permissions.REMOVE_PROPERTY), Permissions.WRITE, ImmutableSet.of(Permissions.ADD_NODE, Permissions.REMOVE_NODE, Permissions.ADD_PROPERTY, Permissions.REMOVE_PROPERTY,Permissions.MODIFY_PROPERTY) ); for (long permission : aggregation.keySet()) { assertEquals(aggregation.get(permission), ImmutableSet.copyOf(Permissions.aggregates(permission))); } }
@Test public void testAggregatesAllPermission() { Iterable<Long> aggregates = Permissions.aggregates(Permissions.ALL); assertFalse(Iterables.contains(aggregates, Permissions.ALL)); Set<Long> expected = Sets.newHashSet(Permissions.PERMISSION_NAMES.keySet()); expected.removeAll(ImmutableList.of(Permissions.ALL, Permissions.WRITE, Permissions.READ, Permissions.SET_PROPERTY, Permissions.REMOVE)); assertEquals(expected, Sets.newHashSet(aggregates)); }
@Test public void testAggregatesNoPermission() { assertFalse(Permissions.aggregates(Permissions.NO_PERMISSION).iterator().hasNext()); }
@Override public boolean isGranted(@NotNull Tree parent, @Nullable PropertyState property, long permissions) { Tree immParent = PermissionUtil.getReadOnlyTree(parent, immutableRoot); boolean isGranted = false; long coveredPermissions = Permissions.NO_PERMISSION; for (AggregatedPermissionProvider aggregatedPermissionProvider : pps) { long supportedPermissions = aggregatedPermissionProvider.supportedPermissions(immParent, property, permissions); if (doEvaluate(supportedPermissions)) { if (compositionType == AND) { isGranted = aggregatedPermissionProvider.isGranted(immParent, property, supportedPermissions); if (!isGranted) { return false; } coveredPermissions |= supportedPermissions; } else { for (long p : Permissions.aggregates(permissions)) { if (aggregatedPermissionProvider.isGranted(immParent, property, p)) { coveredPermissions |= p; isGranted = true; } } } } } return isGranted && coveredPermissions == permissions; }
@Override public boolean isGranted(@NotNull Tree parent, @Nullable PropertyState property, long permissions) { Tree immParent = PermissionUtil.getReadOnlyTree(parent, immutableRoot); boolean isGranted = false; long coveredPermissions = Permissions.NO_PERMISSION; for (AggregatedPermissionProvider aggregatedPermissionProvider : pps) { long supportedPermissions = aggregatedPermissionProvider.supportedPermissions(immParent, property, permissions); if (doEvaluate(supportedPermissions)) { if (compositionType == AND) { isGranted = aggregatedPermissionProvider.isGranted(immParent, property, supportedPermissions); if (!isGranted) { return false; } coveredPermissions |= supportedPermissions; } else { for (long p : Permissions.aggregates(permissions)) { if (aggregatedPermissionProvider.isGranted(immParent, property, p)) { coveredPermissions |= p; isGranted = true; } } } } } return isGranted && coveredPermissions == permissions; }
@Override public boolean isGranted(@Nonnull Tree parent, @Nullable PropertyState property, long permissions) { Tree immParent = PermissionUtil.getImmutableTree(parent, immutableRoot); boolean isGranted = false; long coveredPermissions = Permissions.NO_PERMISSION; for (AggregatedPermissionProvider aggregatedPermissionProvider : pps) { long supportedPermissions = aggregatedPermissionProvider.supportedPermissions(immParent, property, permissions); if (doEvaluate(supportedPermissions)) { if (compositionType == AND) { isGranted = aggregatedPermissionProvider.isGranted(immParent, property, supportedPermissions); if (!isGranted) { return false; } coveredPermissions |= supportedPermissions; } else { for (long p : Permissions.aggregates(permissions)) { if (aggregatedPermissionProvider.isGranted(immParent, property, p)) { coveredPermissions |= p; isGranted = true; } } } } } return isGranted && coveredPermissions == permissions; }
@Test public void testGetNamesSinglePermission() { for (long permission : Permissions.aggregates(Permissions.ALL)) { Set<String> names = Permissions.getNames(permission); assertEquals(1, names.size()); assertEquals(Permissions.PERMISSION_NAMES.get(permission), names.iterator().next()); } }
@Test public void testGetStringSinglePermission() { for (long permission : Permissions.aggregates(Permissions.ALL)) { String str = Permissions.getString(permission); assertEquals(Permissions.PERMISSION_NAMES.get(permission), str); } }
@Override public boolean isGranted(long repositoryPermissions) { boolean isGranted = false; long coveredPermissions = Permissions.NO_PERMISSION; for (AggregatedPermissionProvider aggregatedPermissionProvider : pps) { long supportedPermissions = aggregatedPermissionProvider.supportedPermissions((Tree) null, null, repositoryPermissions); if (doEvaluate(supportedPermissions)) { RepositoryPermission rp = aggregatedPermissionProvider.getRepositoryPermission(); if (compositionType == AND) { isGranted = rp.isGranted(supportedPermissions); if (!isGranted) { return false; } coveredPermissions |= supportedPermissions; } else { for (long p : Permissions.aggregates(repositoryPermissions)) { if (rp.isGranted(p)) { coveredPermissions |= p; isGranted = true; } } } } } return isGranted && coveredPermissions == repositoryPermissions; } }
@Override public boolean isGranted(long repositoryPermissions) { boolean isGranted = false; long coveredPermissions = Permissions.NO_PERMISSION; for (AggregatedPermissionProvider aggregatedPermissionProvider : pps) { long supportedPermissions = aggregatedPermissionProvider.supportedPermissions((Tree) null, null, repositoryPermissions); if (doEvaluate(supportedPermissions)) { RepositoryPermission rp = aggregatedPermissionProvider.getRepositoryPermission(); if (compositionType == AND) { isGranted = rp.isGranted(supportedPermissions); if (!isGranted) { return false; } coveredPermissions |= supportedPermissions; } else { for (long p : Permissions.aggregates(repositoryPermissions)) { if (rp.isGranted(p)) { coveredPermissions |= p; isGranted = true; } } } } } return isGranted && coveredPermissions == repositoryPermissions; } }
@Override public boolean isGranted(long repositoryPermissions) { boolean isGranted = false; long coveredPermissions = Permissions.NO_PERMISSION; for (AggregatedPermissionProvider aggregatedPermissionProvider : pps) { long supportedPermissions = aggregatedPermissionProvider.supportedPermissions((Tree) null, null, repositoryPermissions); if (doEvaluate(supportedPermissions)) { RepositoryPermission rp = aggregatedPermissionProvider.getRepositoryPermission(); if (compositionType == AND) { isGranted = rp.isGranted(supportedPermissions); if (!isGranted) { return false; } coveredPermissions |= supportedPermissions; } else { for (long p : Permissions.aggregates(repositoryPermissions)) { if (rp.isGranted(p)) { coveredPermissions |= p; isGranted = true; } } } } } return isGranted && coveredPermissions == repositoryPermissions; } }
private boolean grantsPermission(long permissions, @Nullable PropertyState property) { boolean isGranted = false; long coveredPermissions = Permissions.NO_PERMISSION; for (int i = 0; i < providers.length; i++) { TreePermission tp = treePermissions[i]; long supported = providers[i].supportedPermissions(tp, property, permissions); if (doEvaluate(supported)) { if (compositionType == AND) { isGranted = (property == null) ? tp.isGranted(supported) : tp.isGranted(supported, property); if (!isGranted) { return false; } coveredPermissions |= supported; } else { for (long p : Permissions.aggregates(permissions)) { boolean aGrant = (property == null) ? tp.isGranted(p) : tp.isGranted(p, property); if (aGrant) { coveredPermissions |= p; isGranted = true; } } } } } return isGranted && coveredPermissions == permissions; }
private boolean grantsPermission(long permissions, @Nullable PropertyState property) { boolean isGranted = false; long coveredPermissions = Permissions.NO_PERMISSION; for (int i = 0; i < providers.length; i++) { TreePermission tp = treePermissions[i]; long supported = providers[i].supportedPermissions(tp, property, permissions); if (doEvaluate(supported)) { if (compositionType == AND) { isGranted = (property == null) ? tp.isGranted(supported) : tp.isGranted(supported, property); if (!isGranted) { return false; } coveredPermissions |= supported; } else { for (long p : Permissions.aggregates(permissions)) { boolean aGrant = (property == null) ? tp.isGranted(p) : tp.isGranted(p, property); if (aGrant) { coveredPermissions |= p; isGranted = true; } } } } } return isGranted && coveredPermissions == permissions; }
private boolean grantsPermission(long permissions, @Nullable PropertyState property) { boolean isGranted = false; long coveredPermissions = Permissions.NO_PERMISSION; for (int i = 0; i < providers.length; i++) { TreePermission tp = treePermissions[i]; long supported = providers[i].supportedPermissions(tp, property, permissions); if (doEvaluate(supported)) { if (compositionType == AND) { isGranted = (property == null) ? tp.isGranted(supported) : tp.isGranted(supported, property); if (!isGranted) { return false; } coveredPermissions |= supported; } else { for (long p : Permissions.aggregates(permissions)) { boolean aGrant = (property == null) ? tp.isGranted(p) : tp.isGranted(p, property); if (aGrant) { coveredPermissions |= p; isGranted = true; } } } } } return isGranted && coveredPermissions == permissions; }
for (long p : Permissions.aggregates(permissions)) { if (aggregatedPermissionProvider.isGranted(location, p)) { coveredPermissions |= p;
for (long p : Permissions.aggregates(permissions)) { if (aggregatedPermissionProvider.isGranted(location, p)) { coveredPermissions |= p;
for (long p : Permissions.aggregates(permissions)) { if (aggregatedPermissionProvider.isGranted(location, p)) { coveredPermissions |= p;
@Test public void testGuestAccess() throws Exception { try (ContentSession guest = login(new GuestCredentials())) { Root r = guest.getLatestRoot(); for (String path : getTreePaths()) { Tree t = r.getTree(path); assertFalse(t.exists()); } PermissionProvider pp = getPermissionProvider(guest.getAuthInfo().getPrincipals()); for (Tree t : trees) { pp.getPrivileges(t).isEmpty(); for (long permission : Permissions.aggregates(Permissions.ALL)) { assertFalse(pp.isGranted(t, null, permission)); assertFalse(pp.isGranted(t, prop, permission)); } for (String action : ACTION_NAMES) { String treePath = t.getPath(); assertFalse(pp.isGranted(treePath, action)); assertFalse(pp.isGranted(PathUtils.concat(treePath, prop.getName()), action)); } } } }