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