> > so far, I've only found so-called manual authentication in the manual: > > user = auth.login_bare(username, password) > > but I am not so sure if this is what I need for the case above. In > particular, how could I obtain the corresponding password for the user > here? And I suppose it is encrypted? >
I think login_bare should work. The only problem is if you are using the CRYPT validator on the password field (which you should be), login_bare will pass the already hashed password (which is what you have in the user record) through CRYPT again, which will re-hash it, and the resulting re-hash will no longer match the original hash. To avoid this, you can temporarily remove the validators from the password field for the login: def program_login(user): db.auth_user.password.requires = None auth.login_bare(user.email, user.password) That assumes email is used as the username (otherwise, use user.username for the login). Anthony