Beispiel #1
0
def register():
    data = request.get_json()

    if 'username' not in data or 'password' not in data:
        return Response.make_response({'message': 'You must enter a username and password'}, 400)

    username = data['username']
    password = data['password']
    role = 'normal'

    if 'role' in data:
        role = data['role']

    user = mongo.db.users.find_one({'username': username})

    if user:
        return Response.make_response({'message': 'Username is already used.'}, 400)
    else:
        hash_password = Bcrypt().generate_password_hash(password)

        mongo.db.users.insert_one({
            'username': username,
            'password': hash_password,
            'role': role
        })

        return Response.make_response({'message': 'You registered successfully. Please log in.'}, 200)
Beispiel #2
0
def get_single_account(account_number):
    account = Account.find_account(account_number)

    if account:
        resp = Response.make_response({'data': Account.make_account_data(account)}, 200)
    else:
        resp = Response.make_response({'message': 'Account Not Found'}, 404)
    return resp
Beispiel #3
0
def delete_account(account_number):
    account = Account.find_account(account_number)

    if account:
        Account.delete_account(account_number)
        resp = Response.make_response({'message': 'Account {} deleted'.format(account_number)}, 200)
    else:
        resp = Response.make_response({'message': 'Account not found'}, 404)
    return resp
Beispiel #4
0
def update_account(account_number):
    json_data = request.get_json()

    account = Account.find_account(account_number)

    if account:
        Account.update_account(account_number, json_data)

        resp = Response.make_response({'message': 'Account {} updated'.format(account_number)}, 200)
    else:
        resp = Response.make_response({'message': 'Account not found'}, 404)
    return resp
Beispiel #5
0
    def decorated(*args, **kwargs):
        if 'Authorization' not in request.headers:
            return Response.make_response({'message': 'Unauthorize'}, 401)
        print(request.headers)
        access_token = request.headers.get('Authorization')

        result = decode_token(access_token)

        if result is None:
            return Response.make_response({'message': 'Token invalid'}, 400)

        user_id = result['user_id']
        role = result['role']
        return f(*args, **kwargs)
Beispiel #6
0
def login():
    data = request.get_json()

    if 'username' not in data or 'password' not in data:
        response = jsonify({'message': 'You must enter a username and password'})
        response.status_code = 400

        return response

    username = data['username']
    password = data['password']

    user = mongo.db.users.find_one({'username': username})

    if not user:
        return Response.make_response({'message': 'You must register first.'}, 400)
    else:
        check_password = Bcrypt().check_password_hash(user['password'], password)

        if check_password:
            token = generate_token(str(user['_id']), user['role'])
            return Response.make_response({'token': token}, 200)
        else:
            return Response.make_response({'message': 'Your password is wrong'}, 400)
Beispiel #7
0
def checkvalidtoken():
    token = request.get_json()['token']

    decode = decode_token(token)

    if decode is not None:
        data = {
            'valid': True,
            'role': decode['role']
        }
    else:
        data = {
            'valid': False
        }

    return Response.make_response(data, 200)
Beispiel #8
0
def get_accounts():

    per_page = int(request.args.get('per_page')) if 'per_page' in request.args else 5
    page = int(request.args.get('page')) if 'page' in request.args else 1

    qFirstName = request.args.get('firstName') if 'firstName' in request.args else None
    qGender = request.args.get('gender') if 'gender' in request.args else None
    qLastName = request.args.get('lastName') if 'lastName' in request.args else None
    qEmail = request.args.get('email') if 'email' in request.args else None
    qBalance = int(request.args.get('balance')) if 'balance' in request.args else None

    search_criteria = {}
    if qFirstName is not None:
        search_criteria["firstname"] = {"$regex": re.escape(qFirstName) + r".*"}
    if qGender is not None:
        search_criteria["gender"] = qGender
    if qLastName is not None:
        search_criteria['lastname'] = {"$regex":  re.escape(qLastName) + r".*"}
    if qEmail is not None:
        search_criteria['email'] = {"$regex": r".*" + re.escape(qEmail) + r".*"}
    if qBalance is not None:
        search_criteria['balance'] = {'$lt': qBalance}

    sort_criteria = {}
    sort_criteria['sortDirection'] = 1 if request.args.get('sortDirection') == 'ASC' else -1
    sort_criteria['sortExpression'] = request.args.get('sortExpression')

    accounts, pagination = Account.get_page_accounts(page, per_page, search_criteria, sort_criteria)

    result = {
        'pagination': {
            'total': pagination.total,
            'per_page': pagination.per_page,
            'current_page': pagination.current_page,
            'last_page': pagination.last_pages,
            'prev_page': pagination.prev_page,
            'next_page': pagination.next_page,
            'from': pagination.start,
            'to': pagination.end,
            'base_url': request.url
        },
        'accounts': accounts
    }

    return Response.make_response(result, 200)
Beispiel #9
0
def create_account():
    json_data = request.get_json()
    Account.create_account(json_data)

    return Response.make_response({'message': 'Account created'}, 200)