Make security UI more robust
[lgpl/argeo-commons.git] / security / eclipse / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / SecurityPerspective.java
index bf404ce6f195dab92e799aeb2d2bde9f2eba916c..9187c7830a4c1beeed9a68967cf1a1117b15eb13 100644 (file)
@@ -1,12 +1,24 @@
 package org.argeo.security.ui;
 
+import org.argeo.security.equinox.CurrentUser;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IFolderLayout;
 import org.eclipse.ui.IPageLayout;
 import org.eclipse.ui.IPerspectiveFactory;
 
 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;
+               }
+
                String editorArea = layout.getEditorArea();
                layout.setEditorAreaVisible(true);
                layout.setFixed(false);
@@ -16,7 +28,11 @@ public class SecurityPerspective implements IPerspectiveFactory {
 
                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.currentUserView");
+       }
+
+       public void setAdminRole(String adminRole) {
+               this.adminRole = adminRole;
        }
 
 }