---------------------
From this version on the LDAPUserFolder product will drop
compatibility with Python 2.1. You should use Python 2.2.3
with Zope 2.6.x or Python 2.3.3 with Zope 2.7.x
The separation of Login and User ID as described below is
only fully supported with Zope versions *higher than 2.7.0*.
For earlier version you should select the same attributes for
both Login and User ID.
Kudos to Chris McDonough to check in the changes below!
- The following API methods of LDAPUserFolder and LDAPDelegate
did not work properly when they were passed a unicode object
(as opposed to a string) as one of their arguments:
LDAPUserFolder.manage_edit
LDAPDelegate.edit
LDAPDelegate.insert
- When selecting the full DN as login attributes a user
was unable to log in if the DN contained non-ASCII characters
(JTracker issue 372 by Ralf Herold).
- Distinction between user id and login name. You can now
configure the attribute used for a user id to use a
different LDAP attribute than the attribute used for a
user's login name. This allows you to configure
LDAPUserFolder, and thus Zope, to use an identifier other
than the user id as a login name. This feature is useful if
you wish to use email addresses or other identifiers which
may change over time as login names.
If you employ this feature, you may allow login names to
change (by updating the LDAP attributes of the entries to
which they refer), but Zope security depends on the user id
remaining constant; you still may not allow the attribute
used for the user id to change without performing "surgery"
on your Zope instance to update local role maps stored in
your ZODB and so forth.
For backwards compatibility purposes, it is possible to set
the user id attribute and the login name attribute to point
to the same LDAP attribute. In the common case, users
upgrading from older LDAPUserFolder versions, whom typically
employ "cn" as their login name attribute should also employ
"cn" as their user id attribute.
The addition of this feature has caused some method
signatures to change in a non-backwards-compatible way.
These are LDAPUserFolder.manage_addLDAPUserFolder,
LDAPUserFolder.LDAPUserFolder.__init__, and
LDAPUserFolder.LDAPUserFolder.manage_edit. Additionally,
code which relies on LDAPUserFolder's "getUserById"
returning the same value as its "getUser" method will break
as a result of this change.
There is a new API method exposed on the LDAPUserFolder
object as a result of this change: "getUserIds", which
returns an enumeration of all user ids.