XUFUser.getId() tries obtain Id from self.propSource first
which causes infinite reqursion because CMF/Plone
property sources need object Id to fetch object's
properties so they call getId() which tries to get Id
from the self.propSource and so on and so on.
In general it is not a good idea to keep object's Id
separately from the object itself. Confusion seems to
come from the fact that User.id is not a unix user id or
windows user id or database user key or whatever.
User.id is an internal Zope identifier which should be
unique within parent's context and should be always
available. Proposed patch simply removes check in
self.propSource and makes XUFUser.getId() just return
self.name. Probably using username as an id for
XUFUser objects is not an unique or a best solution in
general, but at least it is consistent with other acl_user
implementations.
patch to User.py