[Plone-IT] Rendere obbligatorio il cambio password

Simone Orsi simahawk a gmail.com
Mer 19 Dic 2012 11:02:25 UTC


On 12/19/2012 11:56 AM, Simone Orsi wrote:
> Ciao,
>
> On 12/19/2012 11:05 AM, Luca Gentili wrote:
>>
>>
>> Il giorno 19 dicembre 2012 09:47, Fabrizio Reale 
>> <fabrizio.reale a redomino.com <mailto:fabrizio.reale a redomino.com>> ha 
>> scritto:
>>
>>     Ciao Luca,
>>
>>     > In ogni caso a me basta che non sia la password di default (che
>>     conosco)
>>     > quindi sapendo "dove" impostare il controllo non avrei
>>     problemi...il punto
>>     > č che io posso (o meglio so) fare la redirect dell'utente
>>     appena loggato
>>     > alla pagina che mi interessa...ma come posso disabilitare la
>>     navigazione su
>>     > home e le altre sezioni del portale se non cambia la password??
>>
>>     Fai un login fittizio con la password di default e nel caso
>>     funzioni lo mandi a
>>     cambiarsela.
>>
>> Cioč?? Io gią reindirizzo l'utente al cambio password quando si logga 
>> al primo accesso (in realtą a tutti gli accessi fintanto che non 
>> reimposta la password) gią lo fa Plone autonomamente nel momento in 
>> cui imposto la property must change password... solo che in realtą 
>> all'utente č "proposto" di cambiare password ... ma se invece di 
>> reimpostarla lui clicca su home o sulle altre sezioni del portale 
>> comunque ci naviga tranquillamente
>
> potresti aggiungere due campi all'utente: un campo 'has_changed_pwd' e 
> un campo lista tipo 'blacklisted_pwds' dove salvi le vecchie pwd da 
> blacklistare.
>
> Poi per evitare che se ne vada a zonzo senza cambiarla puoi creare, 
> come ha giį suggerito Fabrizio, una viewlet globale che funga da 
> 'firewall'.
>
> La viewlet dovrį semplicemente controllare che il flag 
> 'has_changed_pwd' sia attivo, altrimenti farį il redirect al cambio 
> della pwd.
>
> Ovviamente dovrai gestire il flag e la blacklist al cambiamento della pwd.
>
> Per farlo credo che ti basti agganciarti all'evento:
>
> Products.PluggableAuthService.interfaces.events.ICredentialsUpdatedEvent
>
>
> class ICredentialsUpdatedEvent(IPASEvent):
>     """A principal has changed her password.
>
>     Sending this event will cause a PAS user folder to trigger its active
>     credential update plugins.
>     """
>     password = Attribute('The new password')


scusa, dimenticavo che dovrai anche fare l'override del check della pwd 
(nelle versione 'bella' lo farai con un plugin PAS, nella versione 
'brutta' potrai farlo con una patch (ma io non te l'ho detto ;P)). Il 
metodo é 'testPasswordValidity' nel registration tool. In realtį forse 
hai un'altra opzione, che é fare l'override del tool. Ne trovi un 
esempio in Products.remember:

https://github.com/collective/Products.remember/blob/master/Products/remember/tools/registration.py
https://github.com/collective/Products.remember/blob/master/Products/remember/profiles/default/toolset.xml

Cheers

-------------- parte successiva --------------
Un allegato HTML č stato rimosso...
URL: <http://lists.plone.org/pipermail/plone-plone-it/attachments/20121219/9c8b5f97/attachment.html>


Maggiori informazioni sulla lista Plone-IT