Hi list! I'd like to write a custom principal source for signup analgous to chapter 19.2 of Philipp's book BUT based on the 'new style' authentication (zope.app.authentication instead of the old zope.app.pluggableauth). But I'm totally stuck with it.
I have registered a Pluggable Authentication Utility (PAU) via ZMI, then created a principal folder and principal information. I've done that for the global site (root folder) and a local site (called 'subfolder'). All this works fine: I can log in as the new ZMI-created users. But writing a custom pau thing really sucks! How do I get the PAUtility? (or the several PAUs?) paus = zapi.getAllUtilitiesRegisteredFor(zope.app.authentication.interfaces.IPluggableAuthentication) returns no pau at all, neither in the context of the root-folder, nor in the context of the local site called 'subfolder'. len(paus) is allways 0. Note: Since I don't know how to get into a site's context with the debugger (zopectl debug) I've written a very simple view, that shows me the length of the list returned by zapi.getAllUtilitiesRegisteredFor(...) and other things. See below. -- That's a personal-knowledge-lack-workaround because I don't really understand how to use zope.app.component.hooks.setSite() from the debugger ;( But it makes sure, that I'm not in a global context in that particular sense, that only zcml-registered utilities are returned. (Jim told me on IRC about that problem, thanks again!) To control this, the 'aus'-method of the viewclass (see below) returns different values depending on the site (root-folder: 2 and 'subfolder': 3). I'm totally stuck and every hint is welcome! Kind regards, Christian from zope.app.component.hooks import getSite from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile from zope.app import zapi from zope.app.authentication.interfaces import IPluggableAuthentication from zope.app.security.interfaces import IAuthentication class ExperimentView: template = ViewPageTemplateFile('experiment.pt') def site(self): return getSite() def siteName(self): s = getSite() return s.__name__ def paus(self): paus = zapi.getAllUtilitiesRegisteredFor(IPluggableAuthentication) return len(paus) def aus(self): aus = zapi.getAllUtilitiesRegisteredFor(IAuthentication) return len(aus) def __init__(self, context, request): self.context = context self.request = request def __call__(self): return self.template() _______________________________________________ Zope3-users mailing list Zope3email@example.com http://mail.zope.org/mailman/listinfo/zope3-users