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=94b3b93bde59e8ad99a185ee37aff9b3d2dadf62;hpb=97286adeb9f00e02c4a245674ff45628f8aaa9de;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 94b3b93..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 @@ -11,7 +11,7 @@ import java.util.TreeMap; import org.argeo.api.acr.Content; import org.argeo.api.cms.CmsLog; -import org.argeo.api.cms.CmsView; +import org.argeo.api.cms.ux.CmsView; import org.argeo.app.api.RankedObject; import org.argeo.app.core.SuiteUtils; import org.argeo.cms.Localized; @@ -43,7 +43,7 @@ public class DefaultLeadPane implements CmsUiProvider { private ClassLoader l10nClassLoader; @Override - public Control createUiPart(Composite parent, Content node) { + public Control createUiPart(Composite parent, Content node) { CmsView cmsView = CmsSwtUtils.getCmsView(parent); parent.setLayout(CmsSwtUtils.noSpaceGridLayout()); Composite appLayersC = new Composite(parent, SWT.NONE); @@ -72,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(); @@ -83,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);