X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=security%2Fplugins%2Forg.argeo.security.ui.rcp%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fui%2Frcp%2FSecureWorkbenchAdvisor.java;h=b01dd05ba4973939820725f079aa2016d4bf2100;hb=8b8ee149b20e2578a55e17413fa5f7399ff7ba14;hp=bca01e714b2388b353fdc741a1c8cb9e1530ed38;hpb=a3aed6b17b3a5de5f37170bf88a939fb8aae6e68;p=lgpl%2Fargeo-commons.git diff --git a/security/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureWorkbenchAdvisor.java b/security/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureWorkbenchAdvisor.java index bca01e714..b01dd05ba 100644 --- a/security/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureWorkbenchAdvisor.java +++ b/security/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureWorkbenchAdvisor.java @@ -1,19 +1,18 @@ package org.argeo.security.ui.rcp; +import org.eclipse.ui.IPerspectiveDescriptor; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; import org.eclipse.ui.application.WorkbenchAdvisor; import org.eclipse.ui.application.WorkbenchWindowAdvisor; public class SecureWorkbenchAdvisor extends WorkbenchAdvisor { - static final String DEFAULT_PERSPECTIVE_ID = "org.argeo.security.ui.adminSecurityPerspective"; //$NON-NLS-1$ public final static String INITIAL_PERSPECTIVE_PROPERTY = "org.argeo.security.ui.initialPerspective"; + private String initialPerspective = System.getProperty( + INITIAL_PERSPECTIVE_PROPERTY, null); private final String username; - private String initialPerspective = System.getProperty( - INITIAL_PERSPECTIVE_PROPERTY, DEFAULT_PERSPECTIVE_ID); public SecureWorkbenchAdvisor(String username) { - super(); this.username = username; } @@ -23,6 +22,17 @@ public class SecureWorkbenchAdvisor extends WorkbenchAdvisor { } public String getInitialWindowPerspectiveId() { + if (initialPerspective != null) { + // check whether this user can see the declared perspective + // (typically the perspective won't be listed if this user doesn't + // have the right to see it) + IPerspectiveDescriptor pd = getWorkbenchConfigurer().getWorkbench() + .getPerspectiveRegistry() + .findPerspectiveWithId(initialPerspective); + if (pd == null) + return null; + } return initialPerspective; } + }