[Zope-PAS] Re: Problem setting member properties from PAS IUpdateCredentialPlugin

Tres Seaver tseaver at palladion.com
Sat Oct 20 13:18:53 EDT 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Jordan Baker wrote:

> I'm having problems setting member properties from a PAS plugin.  I'm 
> looking for feedback on my approach to solving this use case, and help 
> on resolving the problem.
> 
> The use case
> ------------
> 
> Implement simple password expiry in Plone. There are other solutions but
> those I've looked at so far have had to override many of the standard
> plone_login templates thus making the implementation future-brittle.
> 
> Potential Solution
> ------------------
> 
> Use an IUpdateCredentialPlugin so that when a member logs the password 
> age is examined.

Those plugins are only called when a user is manually changing their
password, which is pretty much the opposite of what you need (if they
are changing it, then expiration is moot, no?)

> If it is now expired then set the standard property must_change_password
> to True.

You want to hook into the 'IPropertiesPlugin' chain, and get a chance to
set the property on the newly-minted user object there.  You might also
add custom 'IRolesPlugin' / 'IGroupsPlugin' plugin which granted
acccess, or group membership, only if that property was not present.

> After which Plone's regular must_change_password mechanism in 
> plone_login skins takes over.
> 
> I suppose one of the downsides is that this means that it will be
> examined on each user REQUEST? This could be optimized away I suppose 
> somehow...

The performance hit is going to be pretty negligible here, compared to
the cost of rendering Plone's main_template.

> Major Roadblock
> ---------------
> 
> When I update member properties from an updateCredentials() method
> they revert back by the time the REQUEST is finished.

Your plugin isn't even being *called* in t normal request.


Tres.
- --
===================================================================
Tres Seaver          +1 540-429-0999          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHGjh9+gerLs4ltQ4RAor9AJ9cMXYL1nJg8JXE79bGs/lNFuNQZwCeL+L3
wwu/syEOBcc2bcUWsniYfy4=
=k4Zs
-----END PGP SIGNATURE-----



More information about the Zope-PAS mailing list