taylor      2002/12/11 19:17:50

  Modified:    src/java/org/apache/jetspeed/modules/actions/portlets
                        CustomizeSetAction.java
               src/java/org/apache/jetspeed/portal/security/portlets
                        PortletWrapper.java
  Log:
  bug fix 15000, passed on security ref to reference from referred portlets set
  
  Revision  Changes    Path
  1.35      +53 -4     
jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/portlets/CustomizeSetAction.java
  
  Index: CustomizeSetAction.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/portlets/CustomizeSetAction.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- CustomizeSetAction.java   14 Nov 2002 20:21:51 -0000      1.34
  +++ CustomizeSetAction.java   12 Dec 2002 03:17:50 -0000      1.35
  @@ -68,6 +68,8 @@
   import org.apache.jetspeed.om.BaseSecurityReference;
   import org.apache.jetspeed.om.SecurityReference;
   import org.apache.jetspeed.om.profile.Profile;
  +import org.apache.jetspeed.om.profile.ProfileLocator;
  +import org.apache.jetspeed.om.profile.ProfileException;
   import org.apache.jetspeed.om.profile.QueryLocator;
   import org.apache.jetspeed.om.registry.RegistryEntry;
   import org.apache.jetspeed.om.registry.PortletEntry;
  @@ -87,6 +89,7 @@
   import org.apache.jetspeed.om.profile.psml.PsmlController;
   import org.apache.jetspeed.om.profile.Control;
   import org.apache.jetspeed.om.profile.psml.PsmlControl;
  +import org.apache.jetspeed.om.profile.PSMLDocument;
   import org.apache.jetspeed.om.security.JetspeedUser;
   import org.apache.jetspeed.services.idgenerator.JetspeedIdGenerator;
   import org.apache.jetspeed.services.JetspeedSecurity;
  @@ -707,13 +710,59 @@
   
               for (int i = 0; i < refNames.length; i++)
               {
  -              Reference ref = new PsmlReference();
  -              ref.setPath(refNames[i]);
  -              portlets.addReference(ref);
  +                SecurityReference sref = getSecurityReference(rundata, refNames[i]);
  +                if (sref != null)
  +                {
  +                    Reference ref = new PsmlReference();
  +                    ref.setPath(refNames[i]);              
  +                    ref.setSecurityRef(sref);
  +                    portlets.addReference(ref);
  +                }
               }
           }
           SessionState customizationState = ((JetspeedRunData) 
rundata).getPageSessionState();
           customizationState.setAttribute("customize-mode", "layout");
  +    }
  +
  +    /**
  +     * Get the security reference from the outer portlet set
  +     *
  +     * @param path the psml locator path
  +     * @return the security reference of the referenced resource     
  +     */
  +    protected SecurityReference getSecurityReference(RunData rundata, String path)
  +    {
  +        try
  +        {
  +            ProfileLocator locator = Profiler.createLocator();
  +            locator.createFromPath(path);
  +            Profile profile = Profiler.getProfile(locator);
  +            if (profile != null)
  +            {
  +                PSMLDocument doc = profile.getDocument();
  +                if (doc != null)
  +                {
  +                    Portlets rootSet = doc.getPortlets();
  +                    /*
  +                    There is no way to do a check on a Portlets element, only a 
Entry element.
  +                    This can easily be added, but Im just under a release right now 
and it 
  +                    could be perceived as too destabilizing -- david
  +                    
  +                    if (JetspeedSecurity.checkPermission((JetspeedUser) 
rundata.getUser(),
  +                                                         rootSet,
  +                                                         
JetspeedSecurity.PERMISSION_VIEW))
  +                    {
  +                    */
  +                        return rootSet.getSecurityRef();    
  +        //            }
  +                }
  +            }
  +        }
  +        catch (ProfileException e)
  +        {
  +            Log.error(e);
  +        }
  +        return null;
       }
       
       /** Sets the metainfo for this entry */
  
  
  
  1.15      +12 -9     
jakarta-jetspeed/src/java/org/apache/jetspeed/portal/security/portlets/PortletWrapper.java
  
  Index: PortletWrapper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/portal/security/portlets/PortletWrapper.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- PortletWrapper.java       27 Sep 2002 19:54:27 -0000      1.14
  +++ PortletWrapper.java       12 Dec 2002 03:17:50 -0000      1.15
  @@ -231,7 +231,7 @@
       */
       public boolean getAllowEdit(RunData rundata)
       {
  -        return checkPermission(rundata, JetspeedSecurity.PERMISSION_INFO);
  +        return checkPermission(rundata, JetspeedSecurity.PERMISSION_CUSTOMIZE);
       }
   
       /**
  @@ -308,13 +308,16 @@
               portalResource.setOwner(null);
           }
           
  -        Log.debug("checking for Portlet permission: "
  -                  + permissionName 
  -                  + " for portlet: "
  -                  + wrappedPortlet.getName() 
  -                  + " Owner = " 
  -                  + portalResource.getOwner());
  -
  +        if (Log.getLogger().isDebugEnabled())
  +        {
  +            Log.debug("checking for Portlet permission: "
  +                      + permissionName 
  +                      + " for portlet: "
  +                      + wrappedPortlet.getName() 
  +                      + " Owner = " 
  +                    + portalResource.getOwner());
  +        }
  +        
           return JetspeedSecurity.checkPermission((JetspeedUser) rundata.getUser(),
                                                    portalResource,
                                                    permissionName);
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to