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 2004/08/12 20:41:19 UTC

cvs commit: jakarta-jetspeed/fusion/src/java/org/apache/jetspeed/fusion/engine/servlet FusionServletRequestFactoryImpl.java FusionServletRequestImpl.java

taylor      2004/08/12 11:41:19

  Modified:    fusion/src/java/org/apache/jetspeed/fusion/engine/servlet
                        FusionServletRequestImpl.java
  Added:       fusion/src/java/org/apache/jetspeed/fusion/engine/servlet
                        FusionServletRequestFactoryImpl.java
  Log:
  complete impl of hybrid isUserInRole which makes use of both J1 and JAAS security checks
  
  CVS: ----------------------------------------------------------------------
  CVS: PR:
  CVS:   If this change addresses a PR in the problem report tracking
  CVS:   database, then enter the PR number(s) here.
  CVS: Obtained from:
  CVS:   If this change has been taken from another system, such as NCSA,
  CVS:   then name the system in this line, otherwise delete it.
  CVS: Submitted by:
  CVS:   If this code has been contributed to Apache by someone else; i.e.,
  CVS:   they sent us a patch or a new module, then include their name/email
  CVS:   address here. If this is your work then delete this line.
  CVS: Reviewed by:
  CVS:   If we are doing pre-commit code reviews and someone else has
  CVS:   reviewed your changes, include their name(s) here.
  CVS:   If you have not had it reviewed then delete this line.
  
  Revision  Changes    Path
  1.3       +51 -2     jakarta-jetspeed/fusion/src/java/org/apache/jetspeed/fusion/engine/servlet/FusionServletRequestImpl.java
  
  Index: FusionServletRequestImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/fusion/src/java/org/apache/jetspeed/fusion/engine/servlet/FusionServletRequestImpl.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FusionServletRequestImpl.java	12 Aug 2004 17:37:44 -0000	1.2
  +++ FusionServletRequestImpl.java	12 Aug 2004 18:41:19 -0000	1.3
  @@ -15,12 +15,22 @@
    */
   package org.apache.jetspeed.fusion.engine.servlet;
   
  +import java.util.Iterator;
  +
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   import org.apache.jetspeed.engine.servlet.ServletRequestImpl;
   import org.apache.jetspeed.services.JetspeedSecurity;
  +import org.apache.jetspeed.services.rundata.JetspeedRunDataService;
   import org.apache.jetspeed.services.security.JetspeedSecurityException;
  +import org.apache.pluto.om.common.SecurityRole;
  +import org.apache.pluto.om.common.SecurityRoleRef;
  +import org.apache.pluto.om.common.SecurityRoleRefSet;
  +import org.apache.pluto.om.common.SecurityRoleSet;
  +import org.apache.pluto.om.portlet.PortletDefinition;
   import org.apache.pluto.om.window.PortletWindow;
  +import org.apache.turbine.services.TurbineServices;
  +import org.apache.turbine.services.rundata.RunDataService;
   
   /**
    * @author <a href="mailto:jford@apache.org">Jeremy Ford</a>
  @@ -41,6 +51,14 @@
           this.portletWindow = window;
       }
       
  +    private String getUserName()
  +    {
  +        JetspeedRunDataService runDataService =
  +            (JetspeedRunDataService)TurbineServices.getInstance()
  +                .getService(RunDataService.SERVICE_NAME);
  +        return runDataService.getCurrentRunData().getJetspeedUser().getUserName();        
  +    }
  +    
       /**
        * @see javax.servlet.http.HttpServletRequest#isUserInRole(java.lang.String)
        */
  @@ -52,7 +70,8 @@
           {
               try
               {
  -                result = JetspeedSecurity.hasRole(getRemoteUser(), roleName);
  +                String mappedName = mapRoleRefToRole(roleName);
  +                result = JetspeedSecurity.hasRole(getUserName(), mappedName);
               }
               catch (JetspeedSecurityException e)
               {
  @@ -66,5 +85,35 @@
           }
           
           return result;
  +    }
  +    
  +    private String mapRoleRefToRole(String roleName)
  +    {
  +        PortletDefinition portletDefinition = portletWindow.getPortletEntity().getPortletDefinition();
  +        SecurityRoleRefSet roleRefSet = portletDefinition.getInitSecurityRoleRefSet();
  +        SecurityRoleSet roleSet = portletDefinition.getPortletApplicationDefinition().getWebApplicationDefinition()
  +                .getSecurityRoles();
  +
  +        Iterator roleRefIter = roleRefSet.iterator();
  +        while (roleRefIter.hasNext())
  +        {
  +            SecurityRoleRef roleRef = (SecurityRoleRef) roleRefIter.next();
  +            if (roleName.equals(roleRef.getRoleName()))
  +            {
  +                String roleLinkName = roleRef.getRoleLink();
  +                if (roleLinkName == null || roleLinkName.length() == 0)
  +                {
  +                    roleLinkName = roleName;
  +                }
  +                Iterator roleIter = roleSet.iterator();
  +                while (roleIter.hasNext())
  +                {
  +                    SecurityRole role = (SecurityRole) roleIter.next();
  +                    if (roleLinkName.equals(role.getRoleName()))
  +                        return role.getRoleName();
  +                }
  +            }
  +        }
  +        return roleName;        
       }
   }
  
  
  
  1.1                  jakarta-jetspeed/fusion/src/java/org/apache/jetspeed/fusion/engine/servlet/FusionServletRequestFactoryImpl.java
  
  Index: FusionServletRequestFactoryImpl.java
  ===================================================================
  /*
   * Copyright 2000-2001,2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.jetspeed.fusion.engine.servlet;
  
  
  import javax.servlet.http.HttpServletRequest;
  
  import org.apache.jetspeed.engine.servlet.ServletRequestFactory;
  import org.apache.jetspeed.engine.servlet.ServletRequestFactoryImpl;
  import org.apache.pluto.om.window.PortletWindow;
  
  /**
   * Factory implementation for creating HTTP Request Wrappers
   *
   * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
   * @version $Id: FusionServletRequestFactoryImpl.java,v 1.1 2004/08/12 18:41:19 taylor Exp $
   */
  public class FusionServletRequestFactoryImpl 
      extends ServletRequestFactoryImpl 
      implements ServletRequestFactory
  {
      protected HttpServletRequest createRequest(HttpServletRequest request, PortletWindow window)
      {
          return new FusionServletRequestImpl(request, window);        
      }
  
  }
  
  
  

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