def check_username(form):
if not form.vars.username.endswith('R')
form.errors.username = 'Invalid username'
auth.settings.login_onvalidation = [check_username]def user():.. #TODO validate submitted username.. if request.args(0) == 'login' and request.post_vars.username:.. .. request.post_vars.username = request.vars.username = request.post_vars.username[:-1] # remove last character.. return dict(form=auth())
I just used the following because I don't want their login to succeed if they enter no character IE: 0000012 the real username without the character should also fail.if request.args(0) == 'login' and request.post_vars.username:login_char = request.post_vars.username[-1]if login_char == 'R':request.post_vars.username = request.vars.username = request.post_vars.username[:-1] # remove last characterelse:request.post_vars.username = request.vars.username = request.post_vars.username + 'X'
If i am correct this will not work because it should be:1. check last character2. remove last character3. do db validationI think onvalidation does db validation and then 1&2.Db validation will not pass because usernames are stored without last character (as stated in first post).
Your correct your solution Anthony works.Massimo, I am not sure I understand what db.auth_user.username.requires.insert(0, MyStrangeRequirement()) is doing?