IS_IN_DB validator for auth_user username/email, thanks Anthony, fixed issue 934
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.00.0 (2012-08-15 17:24:22) dev
|
Version 2.00.0 (2012-08-15 17:30:38) dev
|
||||||
|
|||||||
+21
-5
@@ -2056,6 +2056,27 @@ class Auth(object):
|
|||||||
if log is DEFAULT:
|
if log is DEFAULT:
|
||||||
log = self.messages.register_log
|
log = self.messages.register_log
|
||||||
|
|
||||||
|
table_user = self.settings.table_user
|
||||||
|
if 'username' in table_user.fields:
|
||||||
|
username = 'username'
|
||||||
|
else:
|
||||||
|
username = 'email'
|
||||||
|
|
||||||
|
# Ensure the username field is unique.
|
||||||
|
unique_validator = IS_NOT_IN_DB(self.db, table_user[username])
|
||||||
|
if not table_user[username].requires:
|
||||||
|
table_user[username].requires = unique_validator
|
||||||
|
elif isinstance(table_user[username].requires, (list, tuple)):
|
||||||
|
if not any([isinstance(validator, IS_NOT_IN_DB) for validator in
|
||||||
|
table_user[username].requires]):
|
||||||
|
if isinstance(table_user[username].requires, list):
|
||||||
|
table_user[username].requires.append(unique_validator)
|
||||||
|
else:
|
||||||
|
table_user[username].requires += (unique_validator, )
|
||||||
|
elif not isinstance(table_user[username].requires, IS_NOT_IN_DB):
|
||||||
|
table_user[username].requires = [table_user[username].requires,
|
||||||
|
unique_validator]
|
||||||
|
|
||||||
passfield = self.settings.password_field
|
passfield = self.settings.password_field
|
||||||
formstyle = self.settings.formstyle
|
formstyle = self.settings.formstyle
|
||||||
form = SQLFORM(table_user,
|
form = SQLFORM(table_user,
|
||||||
@@ -2117,11 +2138,6 @@ class Auth(object):
|
|||||||
if not self.settings.registration_requires_verification:
|
if not self.settings.registration_requires_verification:
|
||||||
table_user[form.vars.id] = dict(registration_key='')
|
table_user[form.vars.id] = dict(registration_key='')
|
||||||
session.flash = self.messages.registration_successful
|
session.flash = self.messages.registration_successful
|
||||||
table_user = self.settings.table_user
|
|
||||||
if 'username' in table_user.fields:
|
|
||||||
username = 'username'
|
|
||||||
else:
|
|
||||||
username = 'email'
|
|
||||||
user = self.db(table_user[username] == form.vars[username]).select().first()
|
user = self.db(table_user[username] == form.vars[username]).select().first()
|
||||||
user = Storage(table_user._filter_fields(user, id=True))
|
user = Storage(table_user._filter_fields(user, id=True))
|
||||||
session.auth = Storage(user=user, last_visit=request.now,
|
session.auth = Storage(user=user, last_visit=request.now,
|
||||||
|
|||||||
Reference in New Issue
Block a user