Exemplo n.º 1
0
def signup():
    """ регистрация пользователя
    """
    error = None

    # проверяем доступна ли регистрация
    if 'REGISTRATION_ENABLED' in current_app.config:
        if current_app.config['REGISTRATION_ENABLED'] == False:

            # если регистрация отключена, и есть пользователи в БД,
            # то показываем форму логина
            if get_users_count():
                return redirect(url_for('users.signin'))

    # возвращаем форму логина
    if request.method == 'GET':
        return render_template("users/signup.html")

    # остальное, метод POST, т.е. начинаем регистрацию
    # валидируем форму
    valid, error = signup_validate(request.form)
    if not valid:
        return render_template("users/signup.html", error=error)
    
    surname = None
    if 'surname' in request.form:
        surname = Markup.escape(request.form['surname'])

    name = None
    if 'name' in request.form:
        name = Markup.escape(request.form['name'])

    # регистрируем нового пользователя
    user = User(user_name=Markup.escape(request.form['username']),
                name=name,
                surname=surname,
                password='',
                email=Markup.escape(request.form['email']),
                enabled=True)
    user.set_password(request.form['password'])

    # если это первый созданный пользователь, то он 
    # автоматом получает права администратора
    if not get_users_count():
        user.roles = ['super_admin']

    user.save()

    return redirect(url_for('users.signin'))