latest, greatest, ui code. still needs final touches.
authorblk <blk@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Sun, 27 Oct 2002 05:19:13 +0000 (05:19 +0000)
committerblk <blk@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Sun, 27 Oct 2002 05:19:13 +0000 (05:19 +0000)
git-svn-id: https://subversion.switch.ch/svn/shibboleth/java-idp/trunk@332 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 494f370..4fc3864 100755 (executable)
@@ -69,6 +69,7 @@ public class UI extends HttpServlet {
     private String arpDir;
     private String ldapUrl;
     private String attrFile;
+    private String domain;
 
     AAResponder responder;
     ArpRepository arpFactory;
@@ -85,13 +86,8 @@ public class UI extends HttpServlet {
        log.info("UI: Loading init params");
        try {
            Properties props = new Properties();
-           props.setProperty("arpFactoryRealpath", arpDir);
+           props.setProperty("edu.internet2.middleware.shibboleth.aa.FileArpRepository.Path", "/tmp/shib2");
            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) {
@@ -111,6 +107,7 @@ public class UI extends HttpServlet {
        attrFile = getInitParameter("AttrJarfile");
        if (attrFile == null || attrFile.equals("")) 
            throw new ServletException("Cannot find location of attribute jarfile in init parameters");
+
     }
 
     public void service(HttpServletRequest req, 
@@ -118,12 +115,18 @@ public class UI extends HttpServlet {
        throws ServletException, IOException
     {
        String username = req.getParameter("username");
+        adminArp = arpFactory.lookupArp(adminArpName, true);
+       if(adminArp ==  null) {
+          log.error("Admin ARP not found in Arp Repository ("+arpFactory+")");
+          throw new UIException("Unable to load admin ARP.");
+       }
 
        req.setAttribute("username", username);
        req.setAttribute("requestURL", req.getRequestURI().toString());
        req.setAttribute("attrFile", attrFile);
        req.setAttribute("ldapUrl", ldapUrl);
        req.setAttribute("responder", responder);
+       req.setAttribute("adminArp", adminArp);
 
        String action = req.getParameter("Submit");
        String resource = req.getParameter("Resource");
@@ -172,7 +175,7 @@ public class UI extends HttpServlet {
            }
              }     
         } catch (UIException ex) {
-           //          System.out.println(ex);
+               System.out.println(ex);
                handleError(req, res, ex);
            }
     }
@@ -210,8 +213,9 @@ public class UI extends HttpServlet {
     {
        try{
            Arp arp = arpFactory.lookupArp(username, false);
+           if (arp == null) 
+               System.err.println("no arp found for "+username);
            req.setAttribute("shars", arp.getShars());
-           req.setAttribute("adminArp", adminArp);
            req.setAttribute("debug", debug);
            req.setAttribute("userCtx", getUserCtx(username));
        } catch (Exception ex) {
@@ -235,7 +239,6 @@ public class UI extends HttpServlet {
 
        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));
index 0ab2d5c..62e3979 100755 (executable)
@@ -90,10 +90,8 @@ 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 adminAttr = getAdminAttr(adminArp, resource, allAttrs[i]);
        ArpAttribute aAttr = new ArpAttribute(allAttrs[i], false);
        Attribute dAttr = aAttr.getDirAttribute(userCtx, true);
        if (dAttr != null && dAttr.size() > 0) {
@@ -125,13 +123,14 @@ function formCancel()
 
          out.println("</td><td>");
 
+         String checkoption = "";
          if (adminAttr != null) {
-           if (adminAttr.mustExclude)
-             String checkoption = "NO";
+           if (adminAttr.mustExclude())
+             checkoption = "NO";
            else 
-             String checkoption = "YES";
+             checkoption = "YES";
          } else
-           String checkoption = "<input type=\"checkbox\" name=\"attr\" value=\""+a.getName()+"\" "+checkbool+" Yes>";
+           checkoption = "<input type=checkbox name=\"attr\" value=\""+a.getName()+"\" "+checkbool+" Yes>";
        
          if (dAttr.size() > 1) {
          String filtStr="add";
@@ -164,4 +163,21 @@ function formCancel()
        <input type="submit" name="Submit" value="Cancel" onClick="return formCancel();" >
       </form>
     <hr>
-         
+<%!
+public ArpAttribute getAdminAttr(Arp admin, 
+                       ArpResource resource, String attr) {
+    ArpShar s = admin.getShar(resource.getName());
+    if (s == null) {
+       s = admin.getDefaultShar();
+    }
+    if (s == null)
+       return null;
+    ArpResource r = s.bestFit(resource.getName());
+    if (r == null)
+       return null;
+    ArpAttribute a = r.getAttribute(attr);
+    return a;
+}
+%>     
+  </body>      
+</html>          
index d2e0461..d60f6d9 100755 (executable)
        <table>
        
 <% 
-    Set s = getReleaseSet(adminArp, resource, resource, adminArp);
-    ArpAttribute adminAttr = getAttr(s, attr);
-    ArpFilter filter = combineFilters(userAttr.getFilter(), 
-                                     adminAttr.getFilter());
+    ArpAttribute adminAttr = getAdminAttr(adminArp, resource, userAttr.getName());
+    ArpFilter filter = combineFilters(adminAttr, userAttr);
 
     Attribute dAttr = attr.getDirAttribute(userCtx, true);
 
       <input type=submit name="Submit" value="Cancel" onClick="javascript:window.close();">
   </form>
   
+<%!
+public ArpAttribute getAdminAttr(Arp admin, 
+                       String resource, String attr) {
+    ArpShar s = admin.getShar(resource);
+    if (s == null) {
+       s = admin.getDefaultShar();
+    }
+    if (s == null)
+       return null;
+    ArpResource r = s.bestFit(resource);
+    if (r == null)
+       return null;
+    ArpAttribute a = r.getAttribute(attr);
+    return a;
+}
+
+public ArpFilter combineFilters(ArpAttribute attr1, ArpAttribute attr2){
+    ArpFilter filt2 = attr2.getFilter();
+    if (attr1 == null) 
+       return filt2;
+    ArpFilter filt1 = attr1.getFilter();
+    if(filt1 == null)
+       return filt2;
+
+    if(filt2 == null)
+       return filt1;
+
+    ArpFilterValue[]  fv1Array = filt1.getFilterValues();
+       
+    for(int i=0; i<fv1Array.length; i++){
+       ArpFilterValue afv = fv1Array[i];
+
+        if(afv.mustInclude()){  // cannot be filtered out
+           filt2.removeFilterValue(afv); // ok if not there
+       }else{
+           filt2.addAFilterValue(afv);
+       }
+    }
+    return filt2;
+}
+    
+    
+%>     
+  </body>      
+</html>          
 
index dd65f94..51c64a5 100755 (executable)
@@ -5,15 +5,14 @@
        <%@ page import="edu.internet2.middleware.shibboleth.aa.*" %>
        <%@ page import="javax.naming.*" %>
        <%@ page import="javax.naming.directory.*" %>
+       <%@ page import="org.opensaml.*" %>
         <%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
         <%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
         <jsp:useBean id="requestURL" scope="request" class="java.lang.String"/>
         <jsp:useBean id="username" scope="request" class="java.lang.String"/>
-        <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="adminArp" scope="request" class="edu.internet2.middleware.shibboleth.aa.Arp"/>
-       <jsp:useBean id="responder scope="request" class="edu.internet2.middleware.shibboleth.aa.AAResponder"/>
+       <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>
     </div>
 
     <p><b>ARP for <bean:write name="username" /></b></p>
-    
-    <table width="100%" border=1>
-       <tr>
-         <th width="20%">Resource Name</th>
-         <th width="20%">Notes</th> 
-         <th width="30%">Attributes Released</th>
-         <th>Actions</th>
-       </tr>
-       <tr>
-         <td>(*)</td>
-         <td><i>Default release policy</i></td>
-         <td>
-<%
-  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>
-       </tr>
-    </table>
-<p><hr><p>
+
 <% if (shars.length > 0) { 
 %>
     <table width="100%" border=1>
@@ -72,6 +41,7 @@
   <logic:iterate id="resource" name="shar" property="resources">
     <tr>
 <%
+    String sharname = ((edu.internet2.middleware.shibboleth.aa.ArpShar)shar).getName();
     String res = ((edu.internet2.middleware.shibboleth.aa.ArpResource)resource).getName();
     String resourceUrl = (res.startsWith("http")) ? 
        resourceUrl = res.substring(res.indexOf(":")+3) : res;
        <td><jsp:getProperty name="resource" property="comment" /></td>
        <td>
 <%
-  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>");
-         }
-       }
+  SAMLAttribute[] attrSet = responder.getReleaseAttributes(
+               username, "uid=", "",   
+               sharname, res );
+
+  for (int j=0; j<attrSet.length; j++) {
+    Object[] vals = attrSet[j].getValues();
+    for (int k=0; k<vals.length; k++) {
+      out.println(vals[k] + "<br>");
     }
+  }
 %>
        </td>
        <input type=hidden name="username" value="<bean:write name="username"/>">
   </body>
 </html>
 
-<%!
-public String[] getAttrVals(ArpResource r, DirContext userCtx) {
-    String[] buf = new String[1];
-    buf[0] = "";
-    try{ 
-    Vector v = new Vector();
-    ArpAttribute[] aa = r.getAttributes();
-    if (aa==null) 
-       return buf;
-    for (int i=0; i < aa.length; i++) {
-       ArpAttribute a = aa[i];
-       Attribute dAttr = a.getDirAttribute(userCtx, true);
-       if (dAttr != null && dAttr.size() > 0) {
-         for (int j=0; j < dAttr.size(); j++)  {       
-           v.add(dAttr.get(j));
-         }
-       }
-    }
-    buf = new String[v.size()];
-    for (int i = 0; i < v.size(); i++) 
-       buf[i] = (String)v.get(i) + "<br>";
-    
-    } catch (Exception ex) {}
-    return buf;
-}
-%>
\ No newline at end of file