I tried your code, and it works fine for me. However, the password 
"Testpwd" should actually result in an error because the IS_STRONG() 
validator defaults to number=1 (i.e., at least one number in the password), 
and you didn't change that default. So, you should get an error on the 
password field. If the error isn't showing up, perhaps there's a problem 
with your view code. Have you created a custom form in the HTML?

Anthony

On Tuesday, March 27, 2012 11:53:37 PM UTC-4, cyan wrote:
>
>
> Thanks for the pointer. Anthony.
>
> So now I have the following in my controller:
>
> def register():
>  form = SQLFORM.factory( 
>  Field('email', requires=[IS_NOT_EMPTY(), IS_EMAIL(forced=
> '^.*\.edu(|\..*)$', 
>  error_message='email must be .edu address')]), 
>  Field('pwd', requires=[IS_NOT_EMPTY(), IS_STRONG(min=6, special=0, upper=
> 1, 
>  error_message='minimum 6 characters, and at least 1 uppercase character'
> ), CRYPT()]), 
>  Field('re_pwd', requires=IS_EXPR('value==%s' % repr(request.vars.get(
> 'pwd', None)), 
>  error_message='passwords do not match'))) 
>
>  if form.process().accepted: 
>      session.email = form.vars.email 
>      session.pwd = form.vars.pwd 
>      redirect(URL('registered')) 
>  return dict(form=form)
>
>
> And, for testing, I input the following:
>
> a...@abc.edu
>
> Testpwd
>
> Testpwd
>
>
> I didn't get any error messages, so presumably all three validations went 
> fine. However, using a debugger revealed that form.accepted is still None 
> after calling process() on the form. I wonder what went wrong here. Thanks.
> On Tuesday, March 27, 2012 5:54:02 PM UTC-4, Anthony wrote:
>>
>> Here's how auth.register() does it (slightly edited):
>>
>> requires=IS_EXPR('value==%s' % repr(request.vars.get('password', None)),
>>                  error_message="Password fields don't match")
>>
>> Anthony
>>
>> On Tuesday, March 27, 2012 5:40:29 PM UTC-4, cyan wrote:
>>>
>>>
>>> Hi group,
>>>
>>> How do I enforce some simple validation for passwords matching on a form 
>>> in a controller? All I want to do is to check the second password is the 
>>> same as the first one, and here is some code I've come up so far:
>>>
>>> form = SQLFORM.factory(
>>>  Field('email', requires=IS_NOT_EMPTY()),
>>>  Field('pwd', requires=[IS_NOT_EMPTY(), IS_STRONG(min=6, special=0,upper
>>> =1), CRYPT()]),
>>>  Field('re_pwd', requires=IS_MATCH(???)))
>>>
>>> I am attempting to use the validator 'IS_MATCH()' for the second 
>>> password, but not sure how I reference the the input in the first password 
>>> field of the same form. Any suggestion would be welcome. Thanks.
>>>
>>

Reply via email to