def register(): """Register user from current request. Returns the user if successful, else raise.""" errors = None user = None try: data = RegisterUser(prepare_request_data(request)) if data.get('password1') != data.get('password2'): errors = 'Passwords must match.' except voluptuous.MultipleInvalid as err: errors = str(err) if not errors: with tables(db.engine, 'users') as (con, users): try: password_hash = bcrypt.generate_password_hash( request.form['password1']) user = users.insert({ 'username': request.form['username'], 'password': password_hash, 'email': request.form['email'] }).returning(*users.c).execute().fetchone() except exc.IntegrityError as e: errors = "Can\'t create user: " + str(e) if user: user = wrap_user(user) login_user(user) return redirect('/') return render_template('register.html', errors=errors)
def create_user(db, username, password, email): with common.helpers.tables(db.engine, 'users') as (con, users): password_hash = bcrypt.generate_password_hash(password) user = users.insert({ 'username': username, 'password': password_hash, 'email': email }).returning(*users.c).execute().fetchone() return user