Thanks Massimo. However, using auth.settings.profile_onvalidation.append(reauthenticate_user)
has presented a problem of its own. I insert an extra field ("confirm_password"), to recheck in the onvalidation method. However, the form.vars does not contain form.vars.confirm_password, which worked before when I was using form. process(onvalidation=reauthenticate_user) Here is the relevant code: auth.settings.profile_onvalidation.append(reauthenticate_user) form=auth.profile() my_extra_element = TR(LABEL('Confirm Password'),INPUT(_type="password",_name ="confirm_password", _class="string")) form[0].insert(-1,my_extra_element) def reauthenticate_user(form): #recheck the user password plain_password = form.vars.confirm_password if db.auth_user.password.validate(plain_password) != (db(db.auth_user.id ==auth.user.id).select().first().password, None): form.errors.confirm_password = "Must enter correct password" The form passed into reauthenticate_user does not contain form.vars.confirm_password variable. Any ideas on why this happens now, but not before? On Thursday, September 5, 2013 4:46:11 PM UTC-7, Massimo Di Pierro wrote: > > This > > form = auth.profile() > form.process(onvalidation=reauthenticate_user) > > is wrong because auth.profile() already calls process inside. Instead you > should do: > > auth.settings.profile_onvalidation.append(reauthenticate_user) > form = auth.profile() > > On Thursday, 5 September 2013 17:42:18 UTC-5, Mark Li wrote: >> >> Currently I am creating a form with auth.profile() >> >> I have an onvalidation method to perform some extra checks. >> >> form = auth.profile() >> if form.process(onvalidation=reauthenticate_user).accepted: >> >> response.flash = "Changes Saved" >> elif form.errors: >> >> response.flash = "Errors found >> >> >> >> This prevented auth.user object from being updated, which auth.profile() >> usually takes care of. >> >> I also tried it with the following: >> >> form = auth.profile() >> form.process(onvalidation=reauthenticate_user) >> >> >> >> but the default accepts method that usually updates auth.user doesn't >> work either >> >> For now, I've just added the following to the accepted method: >> auth.user.update(db.auth_user._filter_fields(form.vars)) >> >> But I'm interested in knowing if it's possible to specify an onvalidation >> method for auth.profile(), while still using the built-in accepts method. >> > -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.