Le 8 nov. 2010 à 17:02, Wichert Akkerman a écrit : > On 2010-11-8 16:42, Simone Orsi wrote: >> On 11/08/2010 04:29 PM, Gilles Lenfant wrote: >>> Le 8 nov. 2010 à 15:34, Simone Orsi a écrit : >>> >>>> On 11/08/2010 03:09 PM, Wichert Akkerman wrote: >>>>> On 11/8/10 14:51 , Simone Orsi wrote: >>>>>> On 11/08/2010 11:14 AM, Gilles Lenfant wrote: >>>>>>> Le 8 nov. 2010 à 10:18, Simone Orsi a écrit : >>>>>>> >>>>>>>> hi, >>>>>>>> >>>>>>>> I need to create a product that deletes any user's content on user >>>>>>>> deletion. I googled and grepped here and there and it seems there's no >>>>>>>> event fired on user deletion. >>>>>>>> >>>>>>>> The only "right way" to do that seems to create an IUserManager PAS >>>>>>>> plugin to handle it but IMHO that means much work to be done only to >>>>>>>> have an event hook. The other solution, obviously, is monkey-patching, >>>>>>>> which becomes even more bad since that part of PluggableAuthServ is >>>>>>>> already patched by PlonePAS. >>>>>>>> >>>>>>>> Is this right? Do I have to create a plugin? >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I ran into this some times ago. See >>>>>>> https://dev.plone.org/plone/ticket/7948 >>>>>>> >>>>>>> Was not for content but for user properties. Seems that Tarek Ziade >>>>>>> started something in the Zope dev ML (PAS is a Zope hosted component) >>>>>>> but I dunno the progress status. >>>>>>> >>>>>>> Note that it is very difficult to handle users from external sources >>>>>>> deletion (LDAP, RDBMS, ...) since there's no event bus that goes to >>>>>>> Zope. >>>>>>> >>>>>>> Cheers >>>>>> >>>>>> hi Gilles, >>>>>> >>>>>> thank for the link. Why is so difficult? I mean, what is needed IMO is >>>>>> an event hook on the plone/zope side which gets triggered everytime a >>>>>> user is deleted, non matter the source of the deletion. Am I missing >>>>>> some inner implication? >>>>> >>>>> How do you expect Plone to know about a user being deleted in an active >>>>> directory database? Or when someone deletes an OpenID identity? >>>>> >>>>> Wichert. >>>> >>>> I apologize, you are right Wichert. Anyway, the usecase I refer to does >>>> not include deleting users from the source. So, I think I have to write >>>> my custom plugin to handle my usecase. >>> >>> Sure, you may subclass the Products.PlonePAS.plugins.user.UserManager class >>> or any better suited user source plugin class that implements >>> IUserManagement, and do this : >>> >>> class ISomeUserDeleted(Interface): >>> """Event triggerd at user removal""" >>> login = Attribute("login that's already successfully deleted") >>> >>> class SomeUserDeleted(object): >>> implements(ISomeUserDeleted) >>> def __init__(self, login): >>> self.login = login >>> >>> class MyUserSource(UserManager): >>> ... >>> def doDeleteUser(self, login): >>> super(MyUserSource, self).doDeleteUser(login) >>> notify(SomeUserDeleted(login)) >>> ... >>> >>> With appropriate imports of course. Then handle the "SomeUserDeleted" event >>> in whatever you want. >>> >>> Cheers >> >> Yes, this the quickier way. Thanks Gilles. > > Please use Products.PluggableAuthService.events.PrincipalDeleted instead of > SomeUserDeleted though.
Yes, I was not aware of this one, sorry ;) > > Wichert. > > -- > Wichert Akkerman <[email protected]> It is simple to make things. > http://www.wiggy.net/ It is hard to make things simple. > _______________________________________________ Product-Developers mailing list [email protected] http://lists.plone.org/mailman/listinfo/product-developers
