diff -Naur --exclude '*.pyc' /usr/share/zproduct/ldapuserfolder-2.4/LDAPUserFolder/LDAPUserFolder.py LDAPUserFolder/LDAPUserFolder.py
--- /usr/share/zproduct/ldapuserfolder-2.4/LDAPUserFolder/LDAPUserFolder.py	2004-12-09 10:04:09.000000000 -0500
+++ LDAPUserFolder/LDAPUserFolder.py	2004-12-17 15:17:53.140445472 -0500
@@ -146,7 +146,9 @@
 
 
     def __init__( self, title, LDAP_server, login_attr , uid_attr, users_base
-                , users_scope, roles , groups_base, groups_scope, binduid
+                , users_scope, roles
+	        , member_attr, member_dn
+		, groups_base, groups_scope, binduid
                 , bindpwd, binduid_usage, rdn_attr, local_groups=0
                 , encryption='SHA', use_ssl=0, read_only=0, REQUEST=None
                 ):
@@ -204,6 +206,8 @@
                         , users_base=users_base
                         , users_scope=users_scope
                         , roles=roles
+			, member_attr=member_attr
+			, member_dn=member_dn
                         , groups_base=groups_base
                         , groups_scope=groups_scope
                         , binduid=binduid
@@ -390,7 +394,9 @@
 
     security.declareProtected(EDIT_PERMISSION, 'manage_edit')
     def manage_edit( self, title, login_attr, uid_attr, users_base
-                   , users_scope, roles,  groups_base, groups_scope
+                   , users_scope, roles
+		   , member_attr, member_dn
+		   , groups_base, groups_scope
                    , binduid, bindpwd, binduid_usage=1, rdn_attr='cn'
                    , obj_classes='top,person', local_groups=0
                    , encryption='SHA', read_only=0, REQUEST=None
@@ -405,6 +411,8 @@
         self.groups_base = groups_base or users_base
         self.groups_scope = groups_scope
         self.read_only = not not read_only
+	self.member_attr = member_attr
+	self.member_dn = member_dn
 
         self._delegate.edit( login_attr=login_attr,
                              users_base=users_base,
@@ -847,7 +855,7 @@
             res = self._delegate.search( base=self.groups_base
                                        , scope=self.groups_scope
                                        , filter=filter_format('(cn=%s)', (cn,))
-                                       , attrs=['uniqueMember', 'member']
+                                       , attrs=[self.member_attr]
                                        )
 
             if res['exception']:
@@ -889,7 +897,7 @@
         """ Return all those users that are in a group """
         all_dns = {}
         users = []
-        member_attrs = GROUP_MEMBER_MAP.values()
+        member_attrs = [self.member_attr]
 
         if groups is None:
             groups = self.getGroups()
@@ -1270,11 +1278,14 @@
             else:
                 user = getSecurityManager().getUser()
                 try:
-                    initial_member = user.getUserDN()
+		    if self.member_dn:
+                        initial_member = user.getUserDN()
+		    else:
+		        initial_member = user.uid
                 except:
                     initial_member = ''
 
-            attributes[GROUP_MEMBER_MAP.get(newgroup_type)] = initial_member
+            attributes[self.member_attr] = [initial_member]
 
             err_msg = self._delegate.insert( base=self.groups_base
                                            , rdn='cn=%s' % newgroup_name
@@ -1421,6 +1432,7 @@
     security.declareProtected(manage_users, 'manage_deleteUsers')
     def manage_deleteUsers(self, dns=[], REQUEST=None):
         """ Delete all users in list dns """
+	# XXX broken wrt member_attr and member_dn usage
         if len(dns) < 1:
             msg = 'You did not specify users to delete!'
 
@@ -1764,6 +1776,7 @@
 
 def manage_addLDAPUserFolder( self, title, LDAP_server, login_attr, uid_attr
                             , users_base, users_scope, roles, groups_base
+			    , member_attr, member_dn
                             , groups_scope, binduid, bindpwd, binduid_usage=1
                             , rdn_attr='cn', local_groups=0, use_ssl=0
                             , encryption='SHA', read_only=0, REQUEST=None
@@ -1783,6 +1796,8 @@
             users_base=users_base,
             users_scope=users_scope,
             roles=roles,
+	    member_attr=member_attr,
+	    member_dn=member_dn,
             groups_base=groups_base,
             groups_scope=groups_scope,
             binduid=binduid,
diff -Naur --exclude '*.pyc' /usr/share/zproduct/ldapuserfolder-2.4/LDAPUserFolder/dtml/addLDAPUserFolder.dtml LDAPUserFolder/dtml/addLDAPUserFolder.dtml
--- /usr/share/zproduct/ldapuserfolder-2.4/LDAPUserFolder/dtml/addLDAPUserFolder.dtml	2004-12-09 10:04:09.000000000 -0500
+++ LDAPUserFolder/dtml/addLDAPUserFolder.dtml	2004-12-17 14:54:25.727404776 -0500
@@ -114,6 +114,19 @@
         </select>
       </td>
     </tr>
+
+    <tr>
+      <td align="left" valign="top"><div class="form-label">
+        Group membership attribute
+      </div></td>
+      <td align="left" valign="top">
+        <input type="TEXT" name="member_attr:string" size="24"
+		value="member" />
+      </td>
+      <td align="left" valign="top"><div class="form-label">
+        Membership as DN?&nbsp;<input type="checkbox" checked name="member_dn" />
+      </div></td>
+    </tr>
   
     <tr>
       <td align="LEFT" valign="TOP"><div class="form-label">
diff -Naur --exclude '*.pyc' /usr/share/zproduct/ldapuserfolder-2.4/LDAPUserFolder/dtml/properties.dtml LDAPUserFolder/dtml/properties.dtml
--- /usr/share/zproduct/ldapuserfolder-2.4/LDAPUserFolder/dtml/properties.dtml	2004-12-09 10:04:09.000000000 -0500
+++ LDAPUserFolder/dtml/properties.dtml	2004-12-17 15:45:57.772342496 -0500
@@ -135,6 +135,20 @@
     </tr>
   
     <tr>
+      <td align="left" valign="top"><div class="form-label">
+        Group membership attribute
+      </div></td>
+      <td align="left" valign="top">
+        <input type="TEXT" name="member_attr:string" size="24"
+                <dtml-if member_attr>value="&dtml-member_attr;"</dtml-if> />
+      </td>
+      <td align="left" valign="top"><div class="form-label">
+        Membership as DN?&nbsp;<input type="checkbox" <dtml-if member_dn>checked</dtml-if> name="member_dn" />
+      </div></td>
+    </tr>
+
+
+    <tr>
       <td align="LEFT" valign="TOP"><div class="form-label">
         Groups Base DN
       </div></td>

