You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by vk...@apache.org on 2009/05/14 11:12:12 UTC

svn commit: r774696 - in /portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/security: JetspeedPrincipalManagementPortlet.java PrincipaDataProvider.java

Author: vkumar
Date: Thu May 14 09:12:12 2009
New Revision: 774696

URL: http://svn.apache.org/viewvc?rev=774696&view=rev
Log:
Introducing security delegation support in jetspeedPrincipal Portlet

Modified:
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/security/JetspeedPrincipalManagementPortlet.java
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/security/PrincipaDataProvider.java

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/security/JetspeedPrincipalManagementPortlet.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/security/JetspeedPrincipalManagementPortlet.java?rev=774696&r1=774695&r2=774696&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/security/JetspeedPrincipalManagementPortlet.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/security/JetspeedPrincipalManagementPortlet.java Thu May 14 09:12:12 2009
@@ -143,11 +143,22 @@
         principalType = getServiceLocator()
                 .getJetspeedPrincipalManagerProvider().getPrincipalType(
                         principalParam);
+       
+        String filteredRole = getPreference("filteredRole", "");
+        if (principalParam.equals(JetspeedPrincipalType.USER))
+        {
+            principalDataProvider = new PrincipaDataProvider(getManager(), getRoleManager(), getSearchString(), filteredRole, true);
+        }
+        else
+        {
+            principalDataProvider = new PrincipaDataProvider(getManager(), getSearchString());
+        }
+        
         ITab tab = null;
         tabs = new ArrayList();
         group = new WebMarkupContainer("group");
         group.setOutputMarkupId(true);
-        principalDataProvider = new PrincipaDataProvider(getManager(),getSearchString());
+
         
         final DataView<JetspeedPrincipal> principalView = new DataView<JetspeedPrincipal>("entries", principalDataProvider)
         {
@@ -236,7 +247,7 @@
     public void setSearchString(String searchString)
     {
         this.searchString = (searchString == null ? "" : searchString.trim());        
-        principalDataProvider.refresh(getManager(),searchString);
+        principalDataProvider.refresh(getManager(),getRoleManager(),searchString);
         setPrincipal(null);
         controlPannels(false);
     }
@@ -319,7 +330,7 @@
                         getPrincipal().setEnabled(isUserEnabled());
                         getManager().updatePrincipal(principal);
                         setPrincipal(principal);
-                        principalDataProvider.refresh(getManager(),getSearchString());
+                        principalDataProvider.refresh(getManager(),getRoleManager(),getSearchString());
                     }
                     catch (SecurityException jSx)
                     {
@@ -338,7 +349,7 @@
                         getManager().removePrincipal(principal.getName());
                         setPrincipal(null);
                         controlPannels(false);
-                        principalDataProvider.refresh(getManager(),getSearchString());
+                        principalDataProvider.refresh(getManager(),getRoleManager(),getSearchString());
                     }
                     catch (SecurityException e)
                     {
@@ -770,7 +781,7 @@
                     {
                         log.error("Failed to update user.", jSx);
                     }
-                    principalDataProvider.refresh(getManager(),getSearchString());
+                    principalDataProvider.refresh(getManager(),getRoleManager(),getSearchString());
                 }
             };
             userForm.add(newUser);
@@ -1986,4 +1997,9 @@
         }
         super.onBeforeRender();
     }
+
+    private JetspeedPrincipalManager getRoleManager()
+    {
+        return (JetspeedPrincipalManager) getServiceLocator().getRoleManager();
+    }
 }

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/security/PrincipaDataProvider.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/security/PrincipaDataProvider.java?rev=774696&r1=774695&r2=774696&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/security/PrincipaDataProvider.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/security/PrincipaDataProvider.java Thu May 14 09:12:12 2009
@@ -7,8 +7,12 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.jetspeed.security.JetspeedPrincipal;
 import org.apache.jetspeed.security.JetspeedPrincipalManager;
+import org.apache.jetspeed.security.Role;
+import org.apache.jetspeed.security.RoleManager;
+import org.apache.jetspeed.security.SecurityException;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
 import org.apache.wicket.markup.repeater.data.IDataProvider;
 import org.apache.wicket.model.IModel;
@@ -16,15 +20,31 @@
 
 public class PrincipaDataProvider extends SortableDataProvider<JetspeedPrincipal> implements IDataProvider<JetspeedPrincipal>
 {
-    public enum OrderBy { NAME_ASC, NAME_DESC }
+    
+    private static final long serialVersionUID = -5676288154198656171L;
+
+    public enum OrderBy
+    {
+        NAME_ASC, NAME_DESC
+    }
+
     private OrderBy order = OrderBy.NAME_ASC;
     private List<JetspeedPrincipal> principalList = new ArrayList<JetspeedPrincipal>();
-    
-    public PrincipaDataProvider(JetspeedPrincipalManager manager,String search)
+    private boolean roleFilter = false;
+    private String filteredRole;
+
+    public PrincipaDataProvider(JetspeedPrincipalManager manager, String search)
     {
-        refresh(manager,search);
+        refresh(manager, search);
     }
-    
+
+    public PrincipaDataProvider(JetspeedPrincipalManager manager, JetspeedPrincipalManager roleManager, String search, String filteredRole, boolean roleFlter)
+    {
+        this.filteredRole = filteredRole;
+        this.roleFilter = roleFlter;
+        refresh(manager, roleManager, search);
+    }
+
     public Iterator<? extends JetspeedPrincipal> iterator(int first, int count)
     {
         int last = first + count;
@@ -44,41 +64,81 @@
     {
         return principalList.size();
     }
+
     public OrderBy getOrderBy()
     {
         return order;
     }
-    
+
     public void setOrderBy(OrderBy orderBy)
     {
         this.order = orderBy;
-    }  
-    
+    }
+
     public void sort()
     {
         Collections.sort(principalList, new PrincipalComparator(getOrderBy()));
     }
-    
+
     public void refresh(JetspeedPrincipalManager manager, String searchString)
     {
         principalList = (List<JetspeedPrincipal>) manager.getPrincipals(searchString);
     }
-    
+
+    public void refresh(JetspeedPrincipalManager manager, JetspeedPrincipalManager roleManager, String searchString)
+    {
+        if (roleFilter && !StringUtils.isEmpty(filteredRole))
+        {
+            if (roleManager.getPrincipal(filteredRole) == null)
+            {
+                principalList = Collections.EMPTY_LIST;
+            }
+            else
+            {
+                List<JetspeedPrincipal> localList = (List<JetspeedPrincipal>) manager.getPrincipals(searchString);
+                for (JetspeedPrincipal principal : localList)
+                {
+                    try
+                    {
+                        List<Role> roles = ((RoleManager) roleManager).getRolesForUser(principal.getName());
+                        for (Role role : roles)
+                        {
+                            if (role.getName().equals(filteredRole))
+                            {
+                                principalList.add(principal);
+                            }
+                        }
+                    }
+                    catch (SecurityException e)
+                    {
+                        principalList = Collections.EMPTY_LIST;
+                    }
+                }
+            }
+        }
+        else
+        {
+            principalList = (List<JetspeedPrincipal>) manager.getPrincipals(searchString);
+        }
+    }
+
     public class PrincipalComparator implements Comparator<JetspeedPrincipal>
     {
         OrderBy orderBy;
-        
+
         public PrincipalComparator(OrderBy order)
         {
             this.orderBy = order;
         }
-        
+
         public int compare(JetspeedPrincipal principal, JetspeedPrincipal otherPrincipal)
         {
-            if(orderBy == OrderBy.NAME_ASC)
+            if (orderBy == OrderBy.NAME_ASC)
+            {
+                return principal.getName().compareToIgnoreCase(otherPrincipal.getName());
+            }
+            else
             {
-                return principal.getName().compareToIgnoreCase(otherPrincipal.getName());    
-            }else{
                 return otherPrincipal.getName().compareToIgnoreCase(principal.getName());
             }
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org