User: stark   
  Date: 01/03/05 02:11:06

  Added:       src/main/org/jboss/test/security/proxy
                        ProjRepositorySecurityProxy2.java
  Log:
  Tests of the JBossSX security framework
  
  Revision  Changes    Path
  1.1                  
jbosstest/src/main/org/jboss/test/security/proxy/ProjRepositorySecurityProxy2.java
  
  Index: ProjRepositorySecurityProxy2.java
  ===================================================================
  /*
   * JBoss, the OpenSource EJB server
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
  package org.jboss.test.security.proxy;
  
  import java.rmi.RemoteException;
  import java.security.AccessController;
  import java.security.Principal;
  import javax.ejb.EJBContext;
  import javax.naming.Name;
  import javax.naming.NamingException;
  import javax.naming.directory.Attribute;
  import javax.naming.directory.Attributes;
  
  import org.jboss.test.security.test.NamespacePermission;
  import org.jboss.test.security.interfaces.IProjRepository;
  
  /** A simple stateful security proxy example for the ProjRepository bean.
  
  @see javax.naming.Name
  @see javax.naming.directory.Attributes
  @see org.jboss.test.security.test.ejbs.project.interfaces.IProjRepository
  
  @author [EMAIL PROTECTED]
  @version $Revision: 1.1 $
  */
  public class ProjRepositorySecurityProxy2 implements IProjRepository
  {
      /**
       * @label bean
       * @clientRole state sink
       * @supplierRole state source 
       */
      private IProjRepository projRepository;
      private EJBContext ctx;
  
      public void setEJBContext(EJBContext ctx)
      {
          this.ctx = ctx;
          System.out.println("ProjRepositorySecurityProxy2.setEJBContext, ctx="+ctx);
      }
      public void setBean(Object bean)
      {
          projRepository = (IProjRepository) bean;
          System.out.println("ProjRepositorySecurityProxy2.setBean, 
bean="+projRepository);
      }
  
      public void ejbCreate(Name projectName)
      {
          Principal user = ctx.getCallerPrincipal();
          String userID = user.getName();
          System.out.println("ProjRepositorySecurityProxy2.ejbCreate, 
projectName="+projectName);
          // Only scott or starksm can create project sessions
          if( userID.equals("scott") == false && userID.equals("starksm") == false )
              throw new SecurityException("Invalid project userID: "+userID);
      }
  
  // --- Begin IProjRepository interface methods
      public void createFolder(Name folderPath)
      {
          System.out.println("ProjRepositorySecurityProxy2.createFolder, 
folderPath="+folderPath);
      }
      
      public void deleteFolder(Name folderPath,boolean recursive)
      {
          System.out.println("ProjRepositorySecurityProxy2.deleteFolder, 
folderPath="+folderPath);
      }
      
      public void createItem(Name itemPath,Attributes attributes)
      {
          System.out.println("ProjRepositorySecurityProxy2.createItem, 
itemPath="+itemPath);
      }
      
      public void updateItem(Name itemPath,Attributes attributes)
      {
          System.out.println("ProjRepositorySecurityProxy2.updateItem, 
itemPath="+itemPath);
      }
      
      public void deleteItem(Name itemPath)
      {
          Principal user = ctx.getCallerPrincipal();
          String userID = user.getName();
          System.out.println("ProjRepositorySecurityProxy2.deleteItem, 
itemPath="+itemPath);
          // Only the item owner can delete it
          String owner = null;
          try
          {
              Attributes attributes = projRepository.getItem(itemPath);
              if( attributes != null )
              {
                  Attribute attr = attributes.get("owner");
                  if( attr != null )
                      owner = (String) attr.get();
              }
          }
          catch(Exception e)
          {
              e.printStackTrace();
              throw new SecurityException("Failed to obtain owner for: "+itemPath);
          }
  
          if( owner == null )
              throw new SecurityException("No owner assigned to: "+itemPath);
          if( owner.equals(userID) == false )
              throw new SecurityException("User: "+userID+" is not the owner of: 
"+itemPath);
      }
  
      public Attributes getItem(Name itemPath)
      {
          NamespacePermission p = new NamespacePermission(itemPath, "r---");
          AccessController.checkPermission(p);
          System.out.println("ProjRepositorySecurityProxy2.getItem, 
itemPath="+itemPath);
          return null;
      }
  // --- End IProjRepository interface methods
  
  }
  
  
  

Reply via email to