OK I added this code after database definition: db.auth_user.email.requires.insert(0, IS_LOWER())
So it is always present with register and login. Now register is working as expected - e.g. if I create first an account with lower case email and then try to create an account with same email but mixed case, the system does not creates a new account. So this important part is working now. But now when I try to login I always have to enter lower case, with mixed case the message is 'Invalid login'. here is the code: #auth.settings.login_onvalidation = *login_email_lower *#current.app.auth = auth form=current.app.auth.login(next=login_next) As you see I commented out login_email_lower and I suppose I should return it back. def *login_email_lower*(form): form.vars.email = form.vars.email.lower() return(form)

