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

Rispondere a