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 ta...@apache.org on 2005/10/28 08:18:24 UTC

svn commit: r329120 - /portals/jetspeed-2/trunk/applications/pam/src/java/org/apache/jetspeed/portlets/selector/PortletSelector.java

Author: taylor
Date: Thu Oct 27 23:18:21 2005
New Revision: 329120

URL: http://svn.apache.org/viewcvs?rev=329120&view=rev
Log:
http://issues.apache.org/jira/browse/JS2-384
use PermissionManager service to filter out portlets by subject

Modified:
    portals/jetspeed-2/trunk/applications/pam/src/java/org/apache/jetspeed/portlets/selector/PortletSelector.java

Modified: portals/jetspeed-2/trunk/applications/pam/src/java/org/apache/jetspeed/portlets/selector/PortletSelector.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/applications/pam/src/java/org/apache/jetspeed/portlets/selector/PortletSelector.java?rev=329120&r1=329119&r2=329120&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/applications/pam/src/java/org/apache/jetspeed/portlets/selector/PortletSelector.java (original)
+++ portals/jetspeed-2/trunk/applications/pam/src/java/org/apache/jetspeed/portlets/selector/PortletSelector.java Thu Oct 27 23:18:21 2005
@@ -29,14 +29,20 @@
 import javax.portlet.PortletException;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
+import javax.security.auth.Subject;
 
 import org.apache.jetspeed.CommonPortletServices;
+import org.apache.jetspeed.PortalReservedParameters;
 import org.apache.jetspeed.components.portletregistry.PortletRegistry;
+import org.apache.jetspeed.om.common.SecuredResource;
 import org.apache.jetspeed.om.common.portlet.MutablePortletApplication;
 import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite;
 import org.apache.jetspeed.portlets.pam.PortletApplicationResources;
+import org.apache.jetspeed.request.RequestContext;
 import org.apache.jetspeed.search.ParsedObject;
 import org.apache.jetspeed.search.SearchEngine;
+import org.apache.jetspeed.security.PermissionManager;
+import org.apache.jetspeed.security.PortletPermission;
 import org.apache.portals.gems.browser.BrowserIterator;
 import org.apache.portals.gems.browser.BrowserPortlet;
 import org.apache.portals.gems.util.StatusMessage;
@@ -52,6 +58,7 @@
 {
     protected PortletRegistry registry;
     protected SearchEngine searchEngine;
+    protected PermissionManager permissionManager;
     
     public void init(PortletConfig config)
     throws PortletException 
@@ -67,7 +74,13 @@
         if (null == searchEngine)
         {
             throw new PortletException("Failed to find the Search Engine on portlet initialization");
+        }
+        permissionManager = (PermissionManager)context.getAttribute(CommonPortletServices.CPS_PERMISSION_MANAGER);
+        if (null == permissionManager)
+        {
+            throw new PortletException("Failed to find the Permission Manager on portlet initialization");
         }        
+        
     }
           
     public void doView(RenderRequest request, RenderResponse response)
@@ -130,6 +143,13 @@
             resultSetTitleList.add("Description");            
             Locale locale = request.getLocale();
             List list = new ArrayList();
+            
+            // get subject
+            RequestContext requestContext = (RequestContext) request.getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);            
+            Subject subject = null;
+            if (requestContext != null)
+                subject = requestContext.getSubject();
+            
             while (portlets.hasNext())
             {
                 PortletDefinitionComposite portlet = null;
@@ -141,15 +161,28 @@
                 if (portlet == null)
                     continue;
                 
-                // TODO: from edit mode, check boxes for standard filters
-                // one good default filter would be to filter layout portlets
-                // TODO: security filtering
                 MutablePortletApplication muta = (MutablePortletApplication)portlet.getPortletApplicationDefinition();
                 String appName = muta.getName();
                 if (appName != null && appName.equals("jetspeed-layouts"))
-                    continue;
+                    continue;                
                 
-                list.add(new PortletInfo(appName + "::" + portlet.getName(), portlet.getDisplayNameText(locale), portlet.getDescriptionText(locale)));
+                // SECURITY filtering
+                String uniqueName = appName + "::" + portlet.getName();
+                System.out.println("PM: checking " + portlet.getUniqueName());
+                if (subject != null)
+                {
+                    if (permissionManager.checkPermission(subject, 
+                        new PortletPermission(portlet.getUniqueName(), 
+                        SecuredResource.VIEW_ACTION, subject )))
+                    {
+                        System.out.println("PM Check: GOOD: " + uniqueName);                        
+                        list.add(new PortletInfo(uniqueName, portlet.getDisplayNameText(locale), portlet.getDescriptionText(locale)));
+                    }
+                    else
+                    {
+                        System.out.println("PM Check: Failed: " + uniqueName);
+                    }
+                }
             }            
             BrowserIterator iterator = new PortletIterator(
                     list, resultSetTitleList, resultSetTypeList,



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