X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=plugins%2Forg.argeo.slc.client.ui.dist%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fmodel%2FGroupElem.java;h=8e9cef36d70b868961c63647cd6e4f0daa08fc14;hb=62dbc7d3c1627eb63d1325ff861ae93433de2eee;hp=512f1b5f96057764afe1d4253f8823e7fc40deb3;hpb=0d236262a853a1286b317c30d64d4692bc21c7a4;p=gpl%2Fargeo-slc.git diff --git a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/model/GroupElem.java b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/model/GroupElem.java index 512f1b5f9..8e9cef36d 100644 --- a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/model/GroupElem.java +++ b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/model/GroupElem.java @@ -1,5 +1,6 @@ package org.argeo.slc.client.ui.dist.model; +import java.security.AccessControlException; import java.util.ArrayList; import java.util.List; @@ -28,13 +29,34 @@ public class GroupElem extends DistParentElem { Session session = null; try { Repository repository = repoElem.getRepository(); - // Node repoNode = repoElem.getRepoNode(); session = repository.login(repoElem.getCredentials()); String[] workspaceNames = session.getWorkspace() .getAccessibleWorkspaceNames(); List distributionElems = new ArrayList(); - for (String workspaceName : workspaceNames) { + buildWksp: for (String workspaceName : workspaceNames) { + + // Filter non-public workspaces for user anonymous. + if (repoElem.getRepoNode() == null) { + Session tmpSession = null; + try { + tmpSession = repository.login(workspaceName); + Boolean res = true; + try { + tmpSession.checkPermission("/", "read"); + } catch (AccessControlException e) { + res = false; + } + if (!res) + continue buildWksp; + } catch (RepositoryException e) { + throw new SlcException( + "Cannot list workspaces for anonymous user", e); + } finally { + JcrUtils.logoutQuietly(tmpSession); + } + } + // filter technical workspaces if (workspaceName.startsWith(name)) { distributionElems.add(new WorkspaceElem(repoElem,