paulsp      02/05/27 06:04:25

  Modified:    src/java/org/apache/jetspeed/services/security Tag:
                        security_14 PortalAccessController.java
               src/java/org/apache/jetspeed/services/security/turbine Tag:
                        security_14 TestAccessController.java
                        TurbineAccessController.java
  Added:       src/java/org/apache/jetspeed/services Tag: security_14
                        JetspeedPortalAccessController.java
  Log:
  o Added service accessor class to the PortalAccessController.
  o Completed the Turbine implementation of the PortalAccessController.
  o Completed unit test for the Turbine implementation of the PortalAccessController.
  o Made checkPermission methods public in PortalAccessController interface
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +105 -0    
jakarta-jetspeed/src/java/org/apache/jetspeed/services/Attic/JetspeedPortalAccessController.java
  
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +8 -5      
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/Attic/PortalAccessController.java
  
  Index: PortalAccessController.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/Attic/PortalAccessController.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- PortalAccessController.java       25 May 2002 15:27:11 -0000      1.1.2.1
  +++ PortalAccessController.java       27 May 2002 13:04:25 -0000      1.1.2.2
  @@ -54,11 +54,14 @@
   
   package org.apache.jetspeed.services.security;
   
  -import org.apache.turbine.services.Service;
  +// Jetspeed imports
   import org.apache.jetspeed.om.security.JetspeedUser;
   import org.apache.jetspeed.om.profile.Entry;
   import org.apache.jetspeed.portal.Portlet;
   
  +// Turbine imports
  +import org.apache.turbine.services.Service;
  +
   /**
    * <p> The <code>PortalAccessController</code> interface defines a contract between 
    * the portal and security provider required for authorization to portal-secure 
areas.
  @@ -67,7 +70,7 @@
    *
    * 
    * @author <a href="mailto:[EMAIL PROTECTED]";>David Sean Taylor</a>
  - * @version $Id: PortalAccessController.java,v 1.1.2.1 2002/05/25 15:27:11 taylor 
Exp $
  + * @version $Id: PortalAccessController.java,v 1.1.2.2 2002/05/27 13:04:25 paulsp 
Exp $
    */
   
   public interface PortalAccessController extends Service
  @@ -85,7 +88,7 @@
        * @param action the secured action to be performed on the resource by the user.
        * @return boolean true if the user has sufficient privilege.
        */
  -    boolean checkPermission(JetspeedUser user, Entry entry, String action); 
  +    public boolean checkPermission(JetspeedUser user, Entry entry, String action); 
   
       /**
        * Given a <code>JetspeedUser</code>, authorize that user to perform the 
secured action on
  @@ -98,7 +101,7 @@
        * @param action the secured action to be performed on the resource by the user.
        * @return boolean true if the user has sufficient privilege.
        */
  -    boolean checkPermission(JetspeedUser user, Portlet portlet, String action); 
  +    public boolean checkPermission(JetspeedUser user, Portlet portlet, String 
action); 
   
       /**
        * Given a <code>JetspeedUser</code>, authorize that user to perform the 
secured action on
  @@ -112,7 +115,7 @@
        * @param action the secured action to be performed on the resource by the user.
        * @return boolean true if the user has sufficient privilege.
        */
  -    boolean checkPermission(JetspeedUser user, int resourceType, String resource, 
String action); 
  +    public boolean checkPermission(JetspeedUser user, int resourceType, String 
resource, String action); 
   }
   
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +30 -20    
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/turbine/Attic/TestAccessController.java
  
  Index: TestAccessController.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/turbine/Attic/TestAccessController.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- TestAccessController.java 26 May 2002 17:51:17 -0000      1.1.2.1
  +++ TestAccessController.java 27 May 2002 13:04:25 -0000      1.1.2.2
  @@ -73,13 +73,11 @@
   import org.apache.jetspeed.om.profile.psml.PsmlSkin;
   import org.apache.jetspeed.om.security.JetspeedUser;
   import org.apache.jetspeed.services.JetspeedSecurity;
  -import org.apache.jetspeed.services.security.PortalAccessController;
  +import org.apache.jetspeed.services.JetspeedPortalAccessController;
   import org.apache.jetspeed.services.Profiler;
   import org.apache.jetspeed.services.resources.JetspeedResources;
   
   // Turbine imports
  -//import org.apache.stratum.configuration.Configuration;
  -//import org.apache.stratum.configuration.PropertiesConfiguration;
   import org.apache.turbine.services.TurbineServices;
   import org.apache.turbine.util.TurbineConfig;
   import org.apache.turbine.util.StringUtils;
  @@ -94,13 +92,17 @@
    * TestAccessController
    *
    * @author <a href="[EMAIL PROTECTED]">Paul Spencer</a>
  - * @version $Id: TestAccessController.java,v 1.1.2.1 2002/05/26 17:51:17 paulsp Exp 
$
  + * @version $Id: TestAccessController.java,v 1.1.2.2 2002/05/27 13:04:25 paulsp Exp 
$
    */
   public class TestAccessController extends TestCase
   {
       
  +    private static String ADMIN_PORTLET = "GlobalAdminPortlet"; // Portlet 
accessable by Admin user, role = admin
  +    private static String ALL_PORTLET = "HelloVelocity";  // Portlet accessable by 
Anonymous user
       private static String TEST_GROUP = "Jetspeed";
       private static String TEST_SECURITY_PAGE = "SecurityTest";
  +    private static String USER_PORTLET = "SkinBrowser"; // Portlet accessable by 
general user, role = user
  +
       /**
        * Defines the testcase name for JUnit.
        *
  @@ -138,7 +140,7 @@
           return new TestSuite( TestAccessController.class );
       }
       
  -    public void testVerifyEnvironment() throws Exception 
  +    public void testVerifyEnvironment() throws Exception
       {
           assertEquals( "Using TurbineAccessController",
           "org.apache.jetspeed.services.security.turbine.TurbineAccessController",
  @@ -149,7 +151,7 @@
           assertNotNull( "Getting anonymous user", 
JetspeedSecurity.getAnonymousUser());
       }
       
  -    public void testCreateTestPSML() throws Exception
  +    public void xtestCreateTestPSML() throws Exception
       {
           Portlets rootPortletSet = null;
           ProfileLocator currentLocator = null;
  @@ -182,7 +184,7 @@
           
           Profile newProfile = Profiler.createProfile(newLocator, rootPortletSet);
           PSMLDocument doc = newProfile.getDocument();
  -        System.out.println("doc = " + doc.getName());
  +        //        System.out.println("doc = " + doc.getName());
           
           // this only works with the default configuration (Castor/Filebased)
           File file = new File(doc.getName());
  @@ -191,25 +193,33 @@
           
       }
       
  -    public void testRequiredActions() throws Exception 
  +    public void testRequiredActions() throws Exception
       {
           JetspeedUser adminUser = (JetspeedUser) JetspeedSecurity.getUser("admin");
           assertNotNull( "Getting admin user", adminUser);
  +        adminUser.setHasLoggedIn(Boolean.TRUE);
  +        
           JetspeedUser turbineUser = (JetspeedUser) 
JetspeedSecurity.getUser("turbine");
           assertNotNull( "Getting turbine user", turbineUser);
  +        turbineUser.setHasLoggedIn(Boolean.TRUE);
  +        
           JetspeedUser anonymousUser =  (JetspeedUser) 
JetspeedSecurity.getAnonymousUser();
           assertNotNull( "Getting anonymous user", anonymousUser);
  -
  -        Entry entry = createEntry("GlobalAdminPortlet", "ST_01.admin");
  -        // The following cause "non-static method can not be refrenced
  -        // from a static context error
  -//        assertEquals( "Admin user has view access", true, 
PortalAccessController.checkPermission( adminUser, entry, "view"));
  -//        assertEquals( "Turbine user DOES NOT have view access", false, 
PortalAccessController.checkPermission( turbineUser, entry, "view"));
  -//        assertEquals( "Anonymous user DOES NOT have view access", false, 
PortalAccessController.checkPermission( anonymousUser, entry, "view"));
  -        System.out.println("***");
  -        System.out.println("* This test has NOT been completed");
  -        System.out.println("***");
  -        assertTrue("This test is completed", false);
  +        Entry adminEntry = createEntry( ADMIN_PORTLET, "ST_01.admin");
  +        Entry userEntry = createEntry(USER_PORTLET, "ST_01.user");
  +        Entry allEntry = createEntry(ALL_PORTLET, "ST_01.all");
  +        
  +        assertEquals( "Admin user has view access to " + ADMIN_PORTLET, true, 
JetspeedPortalAccessController.checkPermission( adminUser, adminEntry, "view"));
  +        assertEquals( "Turbine user DOES NOT have view access to " + ADMIN_PORTLET, 
false, JetspeedPortalAccessController.checkPermission( turbineUser, adminEntry, 
"view"));
  +        assertEquals( "Anonymous user DOES NOT have view access to " + 
ADMIN_PORTLET, false, JetspeedPortalAccessController.checkPermission( anonymousUser, 
adminEntry, "view"));
  +        
  +        assertEquals( "Admin user has view access to " + USER_PORTLET, true, 
JetspeedPortalAccessController.checkPermission( adminUser, userEntry, "view"));
  +        assertEquals( "Turbine user has view access to " + USER_PORTLET, true, 
JetspeedPortalAccessController.checkPermission( turbineUser, userEntry, "view"));
  +        assertEquals( "Anonymous user DOES NOT have view access to " + 
USER_PORTLET, false, JetspeedPortalAccessController.checkPermission( anonymousUser, 
userEntry, "view"));
  +        
  +        assertEquals( "Admin user has view access to " + ALL_PORTLET, true, 
JetspeedPortalAccessController.checkPermission( adminUser, allEntry, "view"));
  +        assertEquals( "Turbine user has view access to " + ALL_PORTLET, true, 
JetspeedPortalAccessController.checkPermission( turbineUser, allEntry, "view"));
  +        assertEquals( "Anonymous user has view access to " + ALL_PORTLET, true, 
JetspeedPortalAccessController.checkPermission( anonymousUser, allEntry, "view"));
       }
       /*
        * Setup Turbine environment
  @@ -237,7 +247,7 @@
               fail(StringUtils.stackTrace(e));
           }
       }
  -
  +    
       private PsmlEntry createEntry(java.lang.String parent, java.lang.String id)
       {
           PsmlEntry entry = new PsmlEntry();
  
  
  
  1.1.2.2   +51 -13    
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/turbine/Attic/TurbineAccessController.java
  
  Index: TurbineAccessController.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/turbine/Attic/TurbineAccessController.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- TurbineAccessController.java      26 May 2002 17:51:17 -0000      1.1.2.1
  +++ TurbineAccessController.java      27 May 2002 13:04:25 -0000      1.1.2.2
  @@ -65,6 +65,7 @@
   import org.apache.jetspeed.portal.Portlet;
   import org.apache.jetspeed.portal.PortletController;
   import org.apache.jetspeed.portal.PortletSet;
  +import org.apache.jetspeed.services.resources.JetspeedResources;
   import org.apache.jetspeed.services.JetspeedSecurity;
   import org.apache.jetspeed.services.Registry;
   import org.apache.jetspeed.services.security.PortalAccessController;
  @@ -79,12 +80,14 @@
    * TurbineAccessController
    *
    * @author <a href="[EMAIL PROTECTED]">Paul Spencer</a>
  - * @version $Id: TurbineAccessController.java,v 1.1.2.1 2002/05/26 17:51:17 paulsp 
Exp $
  + * @version $Id: TurbineAccessController.java,v 1.1.2.2 2002/05/27 13:04:25 paulsp 
Exp $
    */
   public class TurbineAccessController extends TurbineBaseService
   implements PortalAccessController
   {
  -    
  +    private final static String CONFIG_DEFAULT_PERMISSION_LOGGEDIN     = 
"services.JetspeedSecurity.permission.default.loggedin";
  +    private final static String CONFIG_DEFAULT_PERMISSION_ANONYMOUS     = 
"services.JetspeedSecurity.permission.default.anonymous";
  +
       /**
        * Given a <code>JetspeedUser</code>, authorize that user to perform the 
secured action on
        * the given resource of the specified resource type. If the user does not have
  @@ -116,9 +119,9 @@
       public boolean checkPermission(JetspeedUser user, Portlet portlet, String 
action)
       {
           String portletName = portlet.getName();
  -        RegistryEntry entry = (RegistryEntry)Registry.getEntry(Registry.PORTLET, 
portletName);
  +        RegistryEntry regEntry = (RegistryEntry)Registry.getEntry(Registry.PORTLET, 
portletName);
           //portlet is not a portlet - probably a controller or control
  -        if (entry==null)
  +        if (regEntry==null)
           {
               PortletSet ps  = portlet.getPortletConfig().getPortletSet();
               if (ps != null)
  @@ -127,15 +130,15 @@
                   if (pc != null)
                   {
                       portletName = pc.getConfig().getName();
  -                    entry = 
(RegistryEntry)Registry.getEntry(Registry.PORTLET_CONTROLLER, portletName);
  +                    regEntry = 
(RegistryEntry)Registry.getEntry(Registry.PORTLET_CONTROLLER, portletName);
                   }
               }
           }
  -        if (entry==null)
  +        if (regEntry==null)
           {
               return checkDefaultPermission(user, action);
           }
  -        return checkPermission(user, entry, action);
  +        return checkPermission(user, regEntry, action);
       }
       
       /**
  @@ -151,7 +154,13 @@
        */
       public boolean checkPermission(JetspeedUser user, Entry entry, String action)
       {
  -        return false;
  +        String portletName = entry.getParent();
  +        RegistryEntry regEntry = (RegistryEntry)Registry.getEntry(Registry.PORTLET, 
portletName);
  +        if (regEntry==null)
  +        {
  +            return checkDefaultPermission(user, action);
  +        }
  +        return checkPermission(user, regEntry, action);
       }
       
       
  @@ -173,7 +182,7 @@
           String securityRole = security.getRole();
           if (null == securityRole)
               return checkDefaultPermission( user, action);
  -        
  +
           // determine if Portlet has specified role
           try
           {
  @@ -185,11 +194,11 @@
           }
           if (null == acl)
               return false;
  -        
  +
           if (!acl.hasRole( securityRole, JetspeedSecurity.JETSPEED_GROUP ))
               return false;
           
  -        return checkDefaultPermission(user, action);
  +        return checkPermission(user, action);
       }
       
       /**
  @@ -200,7 +209,16 @@
        * @exception Sends a RegistryException if the manager can't add
        *            the provided entry
        */
  -    private boolean checkDefaultPermission(JetspeedUser user, String action)
  +    /**
  +     * given the rundata, checks if the currently logged on user has access for the 
given action
  +     *
  +     * @param rundata the request rundata.
  +     * @param permission the jetspeed-action (view, edit, customize, delete...) for 
which permission is being checked.
  +     * @param entry the registry entry from the registry.
  +     * @exception Sends a RegistryException if the manager can't add
  +     *            the provided entry
  +     */
  + private boolean checkPermission(JetspeedUser user, String action)
       {
           AccessControlList acl = null;
           // determine if user has specified role
  @@ -228,7 +246,27 @@
           
           return true;
       }
  -    
  +
  +    private boolean checkDefaultPermission(JetspeedUser user, String action)
  +    {
  +        String defaultPermissions[] = null;
  +        try {
  +            if ( (user == null) || !user.hasLoggedIn() ) {
  +                defaultPermissions = 
JetspeedResources.getStringArray(CONFIG_DEFAULT_PERMISSION_ANONYMOUS);
  +            } else {
  +                defaultPermissions = 
JetspeedResources.getStringArray(CONFIG_DEFAULT_PERMISSION_LOGGEDIN);
  +            }
  +        } catch (Exception e) {
  +            e.printStackTrace();
  +        }
  +        for (int i = 0; i < defaultPermissions.length; i++) {
  +            if (defaultPermissions[i].equals("*"))
  +                return true;
  +            if (defaultPermissions[i].equals(action))
  +                return true;
  +        }
  +        return false;
  +    }
       
       /*
        * Turbine Services Interface
  
  
  

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

Reply via email to