X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2FDefaultLeadPane.java;h=7b7a0319991f4fff4abb00037f2e19127509a29b;hb=f1b87af2e0de38f1f49ab8fe68f9988018914811;hp=5650e9ca59d482da03e972d62d60bb4224fbb8e1;hpb=942fd932e1f6ed3319575c4c1d944912dfca9fa5;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.app.ui/src/org/argeo/app/ui/DefaultLeadPane.java b/org.argeo.app.ui/src/org/argeo/app/ui/DefaultLeadPane.java index 5650e9c..7b7a031 100644 --- a/org.argeo.app.ui/src/org/argeo/app/ui/DefaultLeadPane.java +++ b/org.argeo.app.ui/src/org/argeo/app/ui/DefaultLeadPane.java @@ -9,13 +9,11 @@ import java.util.Map; import java.util.Set; import java.util.TreeMap; -import javax.jcr.Node; -import javax.jcr.RepositoryException; - -import org.argeo.api.cms.CmsView; +import org.argeo.api.acr.Content; +import org.argeo.api.cms.CmsLog; +import org.argeo.api.cms.ux.CmsView; import org.argeo.app.api.RankedObject; import org.argeo.app.core.SuiteUtils; -import org.argeo.api.cms.CmsLog; import org.argeo.cms.Localized; import org.argeo.cms.auth.CurrentUser; import org.argeo.cms.swt.CmsSwtUtils; @@ -45,7 +43,7 @@ public class DefaultLeadPane implements CmsUiProvider { private ClassLoader l10nClassLoader; @Override - public Control createUi(Composite parent, Node node) throws RepositoryException { + public Control createUiPart(Composite parent, Content node) { CmsView cmsView = CmsSwtUtils.getCmsView(parent); parent.setLayout(CmsSwtUtils.noSpaceGridLayout()); Composite appLayersC = new Composite(parent, SWT.NONE); @@ -74,7 +72,7 @@ public class DefaultLeadPane implements CmsUiProvider { } // boolean isAdmin = cmsView.doAs(() -> CurrentUser.isInRole(NodeConstants.ROLE_USER_ADMIN)); - Set userRoles = cmsView.doAs(() -> CurrentUser.roles()); + // Set userRoles = cmsView.doAs(() -> CurrentUser.roles()); Button first = null; layers: for (String layerDef : defaultLayers) { layerDef = layerDef.trim(); @@ -85,10 +83,21 @@ public class DefaultLeadPane implements CmsUiProvider { Set layerRoles = SuiteUtils.extractRoles(semiColArr); if (layers.containsKey(layerId)) { if (!layerRoles.isEmpty()) { - Set intersection = new HashSet(layerRoles); - intersection.retainAll(userRoles); - if (intersection.isEmpty()) + boolean authorized = false; + authorized = cmsView.doAs(() -> { + for (String layerRole : layerRoles) { + if (CurrentUser.implies(layerRole, null)) { + return true; + } + } + return false; + }); + if (!authorized) continue layers;// skip unauthorized layer +// Set intersection = new HashSet(layerRoles); +// intersection.retainAll(userRoles); +// if (intersection.isEmpty()) +// continue layers;// skip unauthorized layer } RankedObject layerObj = layers.get(layerId);