Как предотвратить регистрацию определенных имен пользователей в web2py?

Я включил имена пользователей в auth, выполнив:

auth.define_tables(username=True)

Как я могу запретить пользователям регистрироваться с именами в черном списке, такими как:

admin
administrator
moderator
sysadmin

и, возможно, оскорбительные слова

Обновить

Вот валидатор имени пользователя, который я сделал:

class UsernameValidator(object):
    def __init__(self, error_message='Invalid username'):
        self.error_message = error_message
    def __call__(self, value):
        if self.validate(value):
            return (value, None)
        else:
            return (value, self.error_message)

    def validate(self, value):
        blacklist = ['administrator', 'moderator', 'admin', '<swear word>']
        if any(word in value for word in blacklist):
            return False
        else:
            return True

Я поместил это в файл модели с именем файла, начинающимся с «0», чтобы он загружался до db.py.


person User    schedule 27.01.2014    source источник


Ответы (1)


def validate_username(form):
    if form.vars.username in ['admin', 'administrator', 'moderator']:
        form.errors.username = '%s is not a valid username.' % \
                               form.vars.username

auth.settings.register_onvalidation.append(validate_username)

Вы также можете создать собственный валидатор. и делать:

db.auth_user.username.requires.append(MyCustomValidator())
person Anthony    schedule 27.01.2014