After upgrading to 2.3.2, my custom user registration breaks. I have
auth_user password encoded as follows in my user's model:
...
Field('password', 'password',
readable=False,
label=T('Password'),
requires=[CRYPT(), IS_LENGTH(512, 6)],
),
...
During registration, I create the register_form like so in my controller:
register_form = SQLFORM.factory(
...
db.auth_user.password,
Field('password2', 'password',
label=T(Verify password'),
requires=db.auth_user.password.requires,
),
...
)
During form acceptance, the form is validated by this:
def validate_registration(form):
...
if form.vars.password != form.vars.password2:
form.errors.password = form.errors.password2 = T(
'Passwords do not match')
...
return form
The problem is the passwords aren't the same. I'm assuming the problem is
the requires=CRYPT(), which actually encrypts the password twice, producing
two different results for password and password2. How would I get CRYPT()
to product the same result for both passwords? Do I need to pass in the
hmac_key or salt? Or not run CRYPT() at all?
--