def register():
    try:
        data = registerSchema.validate(request.json)
    except SchemaError as e:
        error = {
            'code': 'auth.register.invalid',
            'message': 'Invalid data for register',
            'details': str(e)
        }
        return jsonify(error=error), 403

    if User.by_username(request.json['username']).count() > 0:
        error = {
            'code': 'auth.register.username_taken',
            'message': 'Username already taken'
        }
        return jsonify(error=error), 403

    if User.by_email(request.json['email']).count() > 0:
        error = {
            'code': 'auth.register.email_in_use',
            'message': 'A user with the supplied email already exists'
        }
        return jsonify(error=error), 403

    user = userstore.create_user(**data)
    session.add(user)
    session.commit()

    login_user(user, True)
    auth_token = user.get_auth_token()
    return jsonify(user=user.as_personal_json(),
                   auth_token=auth_token), 201
Exemple #2
0
def user_workouts(username):
    user = User.by_username(username)
    user = first_or_404(user)
    workouts = Workout.query.filter_by(user_id=user.id) \
                            .filter_by(is_private=False) \
                            .order_by(Workout.created_at.desc())

    return jsonify(workouts=[workout.as_json() for workout in workouts],
                   user=user.as_json())
    def test_can_register(self, flask, dbtransaction):
        data = {
            'full_name': 'Alice',
            'email': '*****@*****.**',
            'password': '******',
            'username': '******'
        }

        result = flask.post('/auth/register', data=json.dumps(data),
                            headers={'Content-Type': 'application/json'})

        assert result.status_code == 201
        assert result.json['user']['email'] == '*****@*****.**'
        assert result.json['user']['username'] == 'alice'
        assert result.json['user']['full_name'] == 'Alice'

        assert User.by_username('alice').count() == 1
Exemple #4
0
def user_by_username(username):
    user = User.by_username(username)
    user = first_or_404(user)
    return jsonify(user=user.as_json())