r4547 - in trunk/src/edu/ucsb/nceas/metacat: . admin

daigle at ecoinformatics.org daigle at ecoinformatics.org
Mon Nov 10 15:22:04 PST 2008


Author: daigle
Date: 2008-11-10 15:22:04 -0800 (Mon, 10 Nov 2008)
New Revision: 4547

Modified:
   trunk/src/edu/ucsb/nceas/metacat/AuthLdap.java
   trunk/src/edu/ucsb/nceas/metacat/admin/LDAPAdmin.java
Log:
Added validation that configured ldap admins actually exist in ldap

Modified: trunk/src/edu/ucsb/nceas/metacat/AuthLdap.java
===================================================================
--- trunk/src/edu/ucsb/nceas/metacat/AuthLdap.java	2008-11-10 23:20:03 UTC (rev 4546)
+++ trunk/src/edu/ucsb/nceas/metacat/AuthLdap.java	2008-11-10 23:22:04 UTC (rev 4547)
@@ -901,7 +901,7 @@
    * @param foruser the user for which the attribute list is requested
    * @returns HashMap a map of attribute name to a Vector of values
    */
-  public HashMap getAttributes(String foruser) throws ConnectException {
+  public HashMap<String,Vector<String>> getAttributes(String foruser) throws ConnectException {
     return getAttributes(null, null, foruser);
   }
 
@@ -913,9 +913,9 @@
    * @param foruser the user whose attributes should be returned
    * @returns HashMap a map of attribute name to a Vector of values
    */
-  public HashMap getAttributes(String user, String password, 
+  public HashMap<String,Vector<String>> getAttributes(String user, String password, 
     String foruser) throws ConnectException {
-    HashMap attributes = new HashMap();
+    HashMap<String,Vector<String>> attributes = new HashMap<String,Vector<String>>();
     String ldapUrl = this.ldapUrl;
     String ldapBase = this.ldapBase;
     String userident = foruser;
@@ -940,7 +940,7 @@
       NamingEnumeration en = attrs.getAll();
       while (en.hasMore()) {
         Attribute att = (Attribute) en.next();
-        Vector values = new Vector();
+        Vector<String> values = new Vector();
         String attName = att.getID();
         NamingEnumeration attvalues = att.getAll();
         while (attvalues.hasMore()) {

Modified: trunk/src/edu/ucsb/nceas/metacat/admin/LDAPAdmin.java
===================================================================
--- trunk/src/edu/ucsb/nceas/metacat/admin/LDAPAdmin.java	2008-11-10 23:20:03 UTC (rev 4546)
+++ trunk/src/edu/ucsb/nceas/metacat/admin/LDAPAdmin.java	2008-11-10 23:22:04 UTC (rev 4547)
@@ -27,6 +27,8 @@
 package edu.ucsb.nceas.metacat.admin;
 
 import java.io.IOException;
+import java.net.ConnectException;
+import java.util.HashMap;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.Vector;
@@ -37,6 +39,7 @@
 
 import org.apache.log4j.Logger;
 
+import edu.ucsb.nceas.metacat.AuthLdap;
 import edu.ucsb.nceas.metacat.service.PropertyService;
 import edu.ucsb.nceas.metacat.util.RequestUtil;
 import edu.ucsb.nceas.utilities.FileUtil;
@@ -45,6 +48,7 @@
 import edu.ucsb.nceas.utilities.PropertiesMetaData;
 import edu.ucsb.nceas.utilities.PropertyNotFoundException;
 import edu.ucsb.nceas.utilities.SortedProperties;
+import edu.ucsb.nceas.utilities.StringUtil;
 
 /**
  * Control the display of the LDAP configuration page and the processing
@@ -234,8 +238,30 @@
 	protected Vector<String> validateOptions(HttpServletRequest request) {
 		Vector<String> errorVector = new Vector<String>();
 
-		//TODO MCD validate options.
+		String adminUsers = request.getParameter("ldap.administrators");
+		Vector<String> adminUserList = StringUtil.toVector(adminUsers, ':');
 
+		try {
+			AuthLdap authLdap = new AuthLdap();
+			for (String adminUser : adminUserList) {
+				try {
+					authLdap.getAttributes(adminUser);
+				} catch (ConnectException ce) {
+					if (ce.getMessage() != null
+							&& ce.getMessage().contains("NameNotFoundException")) {
+						errorVector.add("User : " + adminUser + " is not in LDAP.");
+					} else {
+						errorVector.add("Connection error while verifying Metacat " + 
+								"Administrators : " + ce.getMessage());
+					}
+				}
+			}
+		} catch (InstantiationException ie) {
+			errorVector
+					.add("Instantiation error while verifying Metacat Administrators : "
+							+ ie.getMessage());
+		}
+
 		return errorVector;
 	}
 }
\ No newline at end of file



More information about the Metacat-cvs mailing list