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
<[email protected] <mailto:[email protected]>> 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
_______________________________________________
Plone-IT mailing list
[email protected]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html