[Zope-dev] Member tools refactoring (Was: Better MemberData search
for CMF)
Lennart Regebro
lennart at regebro.nu
Fri Oct 31 10:02:50 EST 2003
Hi all!
I'm gonna try to verbalize my thoughts on this subject, but they are
still quite fuzzy, so bear with me if I sound confused. :) And sorry for
the length of tha mail...
Today there are many parts involved in the Member Data Waltz (or is it a
two-step). There is the user folder, of course, there is the
portal_membership tool and there is the portal_memberdata tool.
So what you do is that you ask the portal_membership tool for the
information, but it takes the user object from the user folder (which
already keeps contains some user data) and then asks portal_memberdata
to wrap the user with it's data. Then there is also the
portal_registration tool, who also does most of it's things by asking
portal_membership. :)
Missing from this is both the possibility to do transforms of data, and
also the possibility to have several user directories, like for example
having most users in an LDAP directory, but some users (like managers)
local. To solve this, in CPS there is a portal_metadirectories tool
involved (I don't know if there are other alternatives to this for non
CPS use), so then we have five different "tools", three of which may
store some parts of the actual user data, and all which seem to overlap
in functionality in different ways.
My suggestion of how to do all this is refactor this into the following
pieces:
1. A user folder
2. A user directory tool
3. A membership tool
1. The user folder stays as it is. It will functionally overlap with the
user directory a lot, but that is to allow third-party userfolders to
still work. I would actually not mind seeing all of the three parts
above merged, but I think that should be a Zope 3 thing, in that case.
The search API here need only return a list of userIds, btw. If you want
the data, ask the membership tool.
2. The user directory tool would basically be a merge of the memberdata
tool and CPS's memberdirectory tool.
It would contain a set of directories. One could be internal, others
could be external. For example one LDAP directory, and one Zope
directory. These directories should all implement advanced search
functionality. The main directory tool would perform a search by calling
the searching on all directories.
The tool need to be able to perform transforms. One source may for
example store a users fullname in the fields "Name" and "Firstname"
another may store it as "Name" and "Family name" and a third just as
"Fullname". The tools would need to be able to create a "fullname"
property out of these properties.
The data may need to be merged for all the users, since you may want to
store user data in the Zope directory also for LDAP users. Or maybe this
is overkill, I'm not sure.
3. A membership tool, that merges todays membership tool with the
registration tool. Again, I think this really should belong in
acl_users, but that is not feasible for Zope 2.
OK, flame away!
//Lennart
More information about the Zope-Dev
mailing list