[Product-Developers] Enabling custom plugin *types* (interfaces) for PAS

Sean Upton sdupton at gmail.com
Mon Nov 18 18:01:50 UTC 2013


Hey folks,

I want to be able to implement a custom PAS plugin type -- for user
enumeration by add-ons, not by Plone's core.  I want to subclass
IUserEnumerationPlugin and use the subclass as a distinct key (e.g.
acl_users.listPlugins(IMyLimitedDirectoryEnumerationPlugin).

While it is easy to create and register custom plugins, registering
custom plugin types seems more difficult, due to lack of public
interfaces in PluginRegistry and a global hardcoded _PLUGIN_TYPE_INFO
tuple in PAS.

My use case is a very large LDAP directory (100k+ users) I want to
incidentally search in my add-ons (event invitations, finding users to
register into group collaboration system);  I do not want to enable
search/enumeration in Plone's core user management (this directory
would only be used for authentication and user properties, otherwise).

Is it reasonable to monkey-patch
Products.PluggableAuthService.PluggableAuthService._PLUGIN_TYPE_INFO
and modify acl_users.plugins._plugin_types and
acl_users.plugins._plugin_type_info in a migration to accomplish my
goal of having a custom plugin type?  Is there a better solution that
I am just not seeing?

Sean


More information about the Product-Developers mailing list