From 61e9e5e89933b419916b767a2977297b32ba7d36 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Tue, 1 Mar 2011 17:51:14 +0000 Subject: [PATCH] Introduce UI activity filtering based on roles git-svn-id: https://svn.argeo.org/commons/trunk@4252 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../META-INF/spring/commands.xml | 10 ++-- .../META-INF/spring/editors.xml | 2 +- .../META-INF/spring/views.xml | 7 +-- .../plugins/org.argeo.security.ui/plugin.xml | 46 ++++++++++++++----- .../plugins/org.argeo.security.ui/pom.xml | 4 ++ .../security/ui/RolesSourceProvider.java | 34 ++++++++++++++ .../security/ui/SecurityPerspective.java | 20 ++++---- .../security/ui/editors/ArgeoUserEditor.java | 2 +- .../ui/{ => internal}/CurrentUser.java | 2 +- .../security/ui/views/CurrentUserView.java | 2 +- .../argeo/security/ui/views/UsersView.java | 2 +- 11 files changed, 94 insertions(+), 37 deletions(-) create mode 100644 security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/RolesSourceProvider.java rename security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/{ => internal}/CurrentUser.java (96%) diff --git a/security/plugins/org.argeo.security.ui/META-INF/spring/commands.xml b/security/plugins/org.argeo.security.ui/META-INF/spring/commands.xml index a89876ad1..f2009b9cc 100644 --- a/security/plugins/org.argeo.security.ui/META-INF/spring/commands.xml +++ b/security/plugins/org.argeo.security.ui/META-INF/spring/commands.xml @@ -4,18 +4,18 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - - - - - diff --git a/security/plugins/org.argeo.security.ui/META-INF/spring/editors.xml b/security/plugins/org.argeo.security.ui/META-INF/spring/editors.xml index 747c2b7b6..bd0151513 100644 --- a/security/plugins/org.argeo.security.ui/META-INF/spring/editors.xml +++ b/security/plugins/org.argeo.security.ui/META-INF/spring/editors.xml @@ -5,7 +5,7 @@ http://www.springframework.org/schema/beans/spring-beans.xsd"> - diff --git a/security/plugins/org.argeo.security.ui/META-INF/spring/views.xml b/security/plugins/org.argeo.security.ui/META-INF/spring/views.xml index 7ae3b62e3..cdc214f9a 100644 --- a/security/plugins/org.argeo.security.ui/META-INF/spring/views.xml +++ b/security/plugins/org.argeo.security.ui/META-INF/spring/views.xml @@ -4,15 +4,12 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - - - - diff --git a/security/plugins/org.argeo.security.ui/plugin.xml b/security/plugins/org.argeo.security.ui/plugin.xml index 3a741cb09..0a78645af 100644 --- a/security/plugins/org.argeo.security.ui/plugin.xml +++ b/security/plugins/org.argeo.security.ui/plugin.xml @@ -6,7 +6,7 @@ @@ -15,20 +15,14 @@ - - @@ -68,7 +62,7 @@ point="org.eclipse.ui.editors"> @@ -133,11 +127,9 @@ + + + + + + + + + + + + + + + + + + + diff --git a/security/plugins/org.argeo.security.ui/pom.xml b/security/plugins/org.argeo.security.ui/pom.xml index 0d9ed3165..ab1ec19c1 100644 --- a/security/plugins/org.argeo.security.ui/pom.xml +++ b/security/plugins/org.argeo.security.ui/pom.xml @@ -56,6 +56,10 @@ org.argeo.eclipse.spring, * + + !org.argeo.security.ui.internal.*, + org.argeo.security.ui.* + diff --git a/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/RolesSourceProvider.java b/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/RolesSourceProvider.java new file mode 100644 index 000000000..b05cd5f48 --- /dev/null +++ b/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/RolesSourceProvider.java @@ -0,0 +1,34 @@ +package org.argeo.security.ui; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import org.argeo.security.ui.internal.CurrentUser; +import org.eclipse.ui.AbstractSourceProvider; + +/** + * Provides the roles of the current user as a variable to be used for activity + * binding + */ +public class RolesSourceProvider extends AbstractSourceProvider { + public final static String ROLES_VARIABLE = "roles"; + private final static String[] PROVIDED_SOURCE_NAMES = new String[] { ROLES_VARIABLE }; + + public Map> getCurrentState() { + Map> stateMap = new HashMap>(); + stateMap.put(ROLES_VARIABLE, CurrentUser.roles()); + return stateMap; + } + + public String[] getProvidedSourceNames() { + return PROVIDED_SOURCE_NAMES; + } + + public void updateRoles() { + fireSourceChanged(0, getCurrentState()); + } + + public void dispose() { + } +} \ No newline at end of file diff --git a/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/SecurityPerspective.java b/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/SecurityPerspective.java index 3b3b9b840..d6bff90f3 100644 --- a/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/SecurityPerspective.java +++ b/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/SecurityPerspective.java @@ -1,5 +1,6 @@ package org.argeo.security.ui; +import org.argeo.security.ui.internal.CurrentUser; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IFolderLayout; @@ -10,13 +11,13 @@ public class SecurityPerspective implements IPerspectiveFactory { private String adminRole = "ROLE_ADMIN"; public void createInitialLayout(IPageLayout layout) { - if (!CurrentUser.roles().contains(adminRole)) { - MessageDialog - .openError(Display.getCurrent().getActiveShell(), - "Forbidden", - "You are not allowed to access this resource."); - return; - } +// if (!CurrentUser.roles().contains(adminRole)) { +// MessageDialog +// .openError(Display.getCurrent().getActiveShell(), +// "Forbidden", +// "You are not allowed to access this resource."); +// return; +// } String editorArea = layout.getEditorArea(); layout.setEditorAreaVisible(true); @@ -25,9 +26,8 @@ public class SecurityPerspective implements IPerspectiveFactory { IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT, 0.4f, editorArea); - left.addView("org.argeo.security.ui.usersView"); - left.addView("org.argeo.security.ui.rolesView"); - // left.addView("org.argeo.security.ui.currentUserView"); + left.addView("org.argeo.security.ui.adminUsersView"); + left.addView("org.argeo.security.ui.adminRolesView"); } public void setAdminRole(String adminRole) { diff --git a/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/editors/ArgeoUserEditor.java b/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/editors/ArgeoUserEditor.java index 99a4652a9..a896f6170 100644 --- a/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/editors/ArgeoUserEditor.java +++ b/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/editors/ArgeoUserEditor.java @@ -13,7 +13,7 @@ import org.eclipse.ui.forms.editor.FormEditor; /** Editor for an Argeo user. */ public class ArgeoUserEditor extends FormEditor { - public final static String ID = "org.argeo.security.ui.argeoUserEditor"; + public final static String ID = "org.argeo.security.ui.adminArgeoUserEditor"; private ArgeoUser user; private ArgeoSecurityService securityService; diff --git a/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/CurrentUser.java b/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/internal/CurrentUser.java similarity index 96% rename from security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/CurrentUser.java rename to security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/internal/CurrentUser.java index a864c3a10..1abdc1564 100644 --- a/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/CurrentUser.java +++ b/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/internal/CurrentUser.java @@ -1,4 +1,4 @@ -package org.argeo.security.ui; +package org.argeo.security.ui.internal; import java.security.AccessController; import java.security.Principal; diff --git a/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/CurrentUserView.java b/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/CurrentUserView.java index 5b0492828..366ac34fb 100644 --- a/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/CurrentUserView.java +++ b/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/CurrentUserView.java @@ -1,6 +1,6 @@ package org.argeo.security.ui.views; -import org.argeo.security.ui.CurrentUser; +import org.argeo.security.ui.internal.CurrentUser; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; diff --git a/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/UsersView.java b/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/UsersView.java index 5d7817827..08bf7b595 100644 --- a/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/UsersView.java +++ b/security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/UsersView.java @@ -6,9 +6,9 @@ import org.argeo.ArgeoException; import org.argeo.security.ArgeoSecurityService; import org.argeo.security.ArgeoUser; import org.argeo.security.nature.SimpleUserNature; -import org.argeo.security.ui.CurrentUser; import org.argeo.security.ui.SecurityUiPlugin; import org.argeo.security.ui.commands.OpenArgeoUserEditor; +import org.argeo.security.ui.internal.CurrentUser; import org.eclipse.core.commands.Command; import org.eclipse.core.commands.IParameter; import org.eclipse.core.commands.Parameterization; -- 2.30.2