I've been researching how to approach this, and I think this problem stems from confusion about workflow state and active/expiration state. The path I'm starting to go down is workflow that hooks a Zope event which is set on changes to an object's expiration. This way I can use workflow state transitions to change things like group memberships and permissions on user object fields.

I haven't gotten much further than that, and I'd appreciate any advice on whether that's a bad idea or how to implement it.

On May 25, 2009, at 7:02 AM, Tim Knapp wrote:

Hello again Rob,

On Thu, 2009-05-21 at 11:35 -0700, Rob Miller wrote:
Ross Patterson wrote:

<snip />


another slightly tricky bit could be handling reactivation after their account has been expired. at this point, the user can't log in... which means you'll be interacting w/ anonymous users, who of course have no privileges. this still isn't that bad, though. it's not like some nefarious attacker is going to go around paying subscription fees on expired accounts. it's similar to a bank; you don't need to prove who you are to make a deposit to an account, only to withdraw. if you really want to be careful, to prevent people from accidentally paying for someone else's subscription, you could require users to enter their password at some point in the renewal process. even though the account is inactive, the password is still there, you should be able to call authenticateCredentials directly on the member object to make sure the entered password is correct. the main thing to be careful of here is to make sure you don't expose any of the member's personal information (email address, etc.) to
anonymous users.

I've implemented this solution as per your recommendations and I ended
up having to create a browser view that the expired member opens up
(with the memberid supplied via query string) and enters their password
and selects their subscription period and the authenticateCredentials
method is run against the member object and if this is successful the
user is 'enabled' and redirected off to the payment processor and
subsequently their expiry date is updated. This all works fine and dandy
but I had to take away the transition guards from the 'enable_private'
transition and I'm unsure what kind of security holes this opens up?

Thanks,
Tim


--
Archive: 
http://www.openplans.org/projects/remember/lists/remember/archive/2009/05/1243389890653
To unsubscribe send an email with subject "unsubscribe" to 
[email protected].  Please contact [email protected] for 
questions.

Reply via email to