more updates to the UI. code should be complete, not debugged
authorblk <blk@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Mon, 7 Oct 2002 17:42:12 +0000 (17:42 +0000)
committerblk <blk@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Mon, 7 Oct 2002 17:42:12 +0000 (17:42 +0000)
git-svn-id: https://subversion.switch.ch/svn/shibboleth/java-idp/trunk@311 ab3bd59b-922f-494d-bb5f-6f0a3c29deca

src/edu/internet2/middleware/shibboleth/ui/UI.java
src/edu/internet2/middleware/shibboleth/ui/UIedit.jsp
src/edu/internet2/middleware/shibboleth/ui/UIfilter.jsp
src/edu/internet2/middleware/shibboleth/ui/UIlist.jsp

index 604849b..494f370 100755 (executable)
@@ -63,15 +63,16 @@ import edu.internet2.middleware.shibboleth.aa.*;
 
 public class UI extends HttpServlet {
 
-    private String adminArpName = "#ADMIN#";
-    private String defaultArpName = "#DEFAULT#";
+    private String adminArpName = "admin";
     private String debug = "true";
 
     private String arpDir;
     private String ldapUrl;
     private String attrFile;
 
-    private ArpRepository arpFactory;
+    AAResponder responder;
+    ArpRepository arpFactory;
+    Arp adminArp;
 
     private static Logger log = 
        Logger.getLogger(UI.class.getName());; 
@@ -86,7 +87,13 @@ public class UI extends HttpServlet {
            Properties props = new Properties();
            props.setProperty("arpFactoryRealpath", arpDir);
            arpFactory = ArpRepositoryFactory.getInstance("edu.internet2.middleware.shibboleth.aa.FileArpRepository", props);
-
+           adminArp = arpFactory.lookupArp("adminArpName", true);
+           if(adminArp ==  null) {
+               log.error("Admin ARP not found in Arp Repository (" + arpFactory + ").");
+               throw new ServletException("Unable to load admin ARP.");
+           }
+           responder = new AAResponder(arpFactory, getDirCtx(), 
+                                       getInitParameter("domain"));
        } catch (Exception ex) {
            throw new ServletException(ex);
        }
@@ -116,6 +123,7 @@ public class UI extends HttpServlet {
        req.setAttribute("requestURL", req.getRequestURI().toString());
        req.setAttribute("attrFile", attrFile);
        req.setAttribute("ldapUrl", ldapUrl);
+       req.setAttribute("responder", responder);
 
        String action = req.getParameter("Submit");
        String resource = req.getParameter("Resource");
@@ -202,10 +210,8 @@ public class UI extends HttpServlet {
     {
        try{
            Arp arp = arpFactory.lookupArp(username, false);
-           Arp defaultArp = getDefault();
-           ArpResource r = (defaultArp.getShar("*")).getResource("*");
            req.setAttribute("shars", arp.getShars());
-           req.setAttribute("defaultRes", r);
+           req.setAttribute("adminArp", adminArp);
            req.setAttribute("debug", debug);
            req.setAttribute("userCtx", getUserCtx(username));
        } catch (Exception ex) {
@@ -215,23 +221,6 @@ public class UI extends HttpServlet {
        loadJsp("/UIlist.jsp", req, res);
     } 
     
-    private Arp getDefault() {
-       try{
-           Arp defaultArp = arpFactory.lookupArp("#DEFAULT", true);
-           ArpShar s = defaultArp.getShar("*");
-           if (s==null)
-               s = new ArpShar("*", true);
-           ArpResource r = s.getResource("*");
-           if (r==null)
-               r = new ArpResource("*");
-           s.addAResource(r);
-           defaultArp.addAShar(s);
-           arpFactory.update(defaultArp);
-           return defaultArp;
-       }catch (Exception e)
-           {}
-       return null;
-    }
 
     private void editArp(String username,
                         String resource,
@@ -243,14 +232,15 @@ public class UI extends HttpServlet {
        try{
        Arp arp = arpFactory.lookupArp(username, false);
        ArpShar s = arp.getShar(resource);
-       Arp adminArp = arpFactory.lookupArp("#ADMIN#", true);
 
        AAAttributes aaa = new AAAttributes(attrFile);
 
+       req.setAttribute("adminArp", adminArp);
        req.setAttribute("userCtx", getUserCtx(username));
        req.setAttribute("allAttrs", aaa.list());
        req.setAttribute("resource", (s==null) ? new ArpResource("", "") : s.getResource(resource));
        req.setAttribute("isNew", isNew);
+
        } catch (Exception ex) {
            throw new UIException("Error retrieving filter." +ex);
        }
@@ -281,12 +271,11 @@ public class UI extends HttpServlet {
            a = r.getAttribute(attr);
        if (a == null)
            a = new ArpAttribute(attr, false);
-       ArpFilter f = a.getFilter();
 
        req.setAttribute("userCtx", getUserCtx(username));
        req.setAttribute("resource", resource);
        req.setAttribute("attr", new ArpAttribute(attr, false));
-       req.setAttribute("filter", f);
+       req.setAttribute("userAttr", a);
        req.setAttribute("close", close);
        } catch (Exception ex) {
            throw new UIException("Error retrieving filter." +ex);
@@ -294,16 +283,28 @@ public class UI extends HttpServlet {
        loadJsp("/UIfilter.jsp", req, res);
     }
 
-    private DirContext getUserCtx(String username) 
+    private DirContext getDirCtx() 
        throws UIException
     {
-       DirContext userCtx = null;
+       DirContext ctx = null;
        Hashtable env = new Hashtable(11);
        env.put(Context.INITIAL_CONTEXT_FACTORY,
                "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, ldapUrl);
        try { 
-           DirContext ctx = new InitialDirContext(env);
+           ctx = new InitialDirContext(env);
+       } catch (Exception ex) {
+           throw new UIException
+               ("Error getting context. "+ex);
+       }
+       return ctx;
+    }
+    private DirContext getUserCtx(String username) 
+       throws UIException
+    {
+       DirContext userCtx = null;
+       try { 
+           DirContext ctx = getDirCtx();
            userCtx = (DirContext)ctx.lookup("uid="+username);
        } catch (Exception ex) {
            throw new UIException
index b2f0dd8..0ab2d5c 100755 (executable)
@@ -14,6 +14,8 @@
        <jsp:useBean id="allAttrs" scope="request" class="java.lang.String[]"/>
        <jsp:useBean id="userCtx" scope="request" class="javax.naming.directory.DirContext"/>
        <jsp:useBean id="isNew" scope="request" class="java.lang.String"/>
+       <jsp:useBean id="adminArp" scope="request" class="edu.internet2.middleware.shibboleth.aa.Arp"/>
+
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
         <link rel="stylesheet" type="text/css" href="main.css" />
@@ -88,7 +90,10 @@ function formCancel()
       </tr>
 
 <%
+   Set s = getReleaseSet(adminArp, resource, resource, adminArp);
+
       for (int i=0; i<allAttrs.length; i++) {
+       ArpAttribute adminAttr = getAttr(s, allAttrs[i]);
        ArpAttribute aAttr = new ArpAttribute(allAttrs[i], false);
        Attribute dAttr = aAttr.getDirAttribute(userCtx, true);
        if (dAttr != null && dAttr.size() > 0) {
@@ -120,7 +125,14 @@ function formCancel()
 
          out.println("</td><td>");
 
-
+         if (adminAttr != null) {
+           if (adminAttr.mustExclude)
+             String checkoption = "NO";
+           else 
+             String checkoption = "YES";
+         } else
+           String checkoption = "<input type=\"checkbox\" name=\"attr\" value=\""+a.getName()+"\" "+checkbool+" Yes>";
+       
          if (dAttr.size() > 1) {
          String filtStr="add";
          if (a.hasFilter())
@@ -132,8 +144,7 @@ function formCancel()
 <% } %>
        </td>
        <td>
-         <input type="checkbox" name="attr" value="<%=a.getName()%>" 
-         <%=checkbool%>>&nbsp;Yes
+         <%=checkoption%>
        </td>
 
       </tr>
index 8e01301..d2e0461 100755 (executable)
         <jsp:useBean id="username" scope="request" class="java.lang.String"/>
        <jsp:useBean id="userCtx" scope="request" class="javax.naming.directory.DirContext"/>
        <jsp:useBean id="attr" scope="request" class="edu.internet2.middleware.shibboleth.aa.ArpAttribute"/>
-       <jsp:useBean id="filter" scope="request" class="edu.internet2.middleware.shibboleth.aa.ArpFilter"/>
+       <jsp:useBean id="userAttr" scope="request" class="edu.internet2.middleware.shibboleth.aa.ArpAttribute"/>
        <jsp:useBean id="resource" scope="request" class="java.lang.String"/>
        <jsp:useBean id="close" scope="request" class="java.lang.String"/>
-
+       <jsp:useBean id="adminArp" scope="request" class="edu.internet2.middleware.shibboleth.aa.Arp"/>
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
         <link rel="stylesheet" type="text/css" href="main.css" />
        <table>
        
 <% 
+    Set s = getReleaseSet(adminArp, resource, resource, adminArp);
+    ArpAttribute adminAttr = getAttr(s, attr);
+    ArpFilter filter = combineFilters(userAttr.getFilter(), 
+                                     adminAttr.getFilter());
+
     Attribute dAttr = attr.getDirAttribute(userCtx, true);
 
     if (dAttr != null && dAttr.size() > 0) {
index 7e58921..dd65f94 100755 (executable)
@@ -12,7 +12,9 @@
         <jsp:useBean id="userCtx" scope="request" class="javax.naming.directory.DirContext"/>
        <jsp:useBean id="shars" scope="request" class="edu.internet2.middleware.shibboleth.aa.ArpShar[]"/>
        <jsp:useBean id="debug" scope="request" class="java.lang.String"/>
-<jsp:useBean id="defaultRes" scope="request" class="edu.internet2.middleware.shibboleth.aa.ArpResource"/>
+       <jsp:useBean id="adminArp" scope="request" class="edu.internet2.middleware.shibboleth.aa.Arp"/>
+       <jsp:useBean id="responder scope="request" class="edu.internet2.middleware.shibboleth.aa.AAResponder"/>
+
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
         <link rel="stylesheet" type="text/css" href="main.css" />
          <td><i>Default release policy</i></td>
          <td>
 <%
-  ArpAttribute []aa= defaultRes.getAttributes();
-  for (int i = 0; i < aa.length; i++) 
-    out.println(aa[i].getName() + "<br>");
+  Set adminSet = responder.getReleaseSet(adminArp, resouce, resource, adminArp);
+  Iterator it = adminSet.iterator();
+  while (it.hasNext()) {
+    ArpAttribute attr = (ArpAttribute) it.next();
+    if (attr.mustExclude())
+       adminSet.remove(attr);
+  }
+  it =         adminSet.iterator();
+  while (it.hasNext()) {
+    ArpAttribute aAttr = (ArpAttribute)it.next();
+    out.println(aAttr.getName() + "<br>");
+  }
 %>
          </td>
          <td></td>
     <form name="list<jsp:getProperty name="resource" property="name" />" action="<bean:write name="requestURL"/>" method="post">
        <td><a href="http://<%=resourceUrl%>"><jsp:getProperty name="resource" property="name" /></a></td>
        <td><jsp:getProperty name="resource" property="comment" /></td>
-<!--   <td><logic:iterate id="attr" name="resource" property="attributes">
-         <jsp:getProperty name="attr" property="name" />, 
-         </logic:iterate></td> -->
        <td>
 <%
-  String[] nvals = getAttrVals((ArpResource)resource, userCtx);
-    for (int i = 0; i < nvals.length; i++)
-       out.println(nvals[i]);
+  Set attrSet = responder.getCombinedReleaseSet(adminArp, resource, resource, username);
+    Iterator it = s.iterator();
+    while(it.hasNext()){
+       ArpAttribute aAttr = (ArpAttribute)it.next();
+       Attribute dAttr = aAttr.getDirAttribute(userCtx, true);
+        if (dAttr != null && dAttr.size() > 0) {
+         for (int j=0; j < dAttr.size(); j++)  {       
+           out.println(dAttr.get(j) + "<br>");
+         }
+       }
+    }
 %>
        </td>
        <input type=hidden name="username" value="<bean:write name="username"/>">