def update_customer_by_id(id):
    customer_schema = CustomerUpdateInputSchema()
    data = request.get_json()

    errors = customer_schema.validate(data)
    if errors:
        raise BadRequestException(message="Invalid Customer Data",
                                  payload=errors)

    data['id'] = id

    customer = customer_service.update(data)

    return jsonify(customer)
def update_customer():
    current_user = get_jwt_identity()
    customer_schema = CustomerUpdateInputSchema()
    data = request.get_json()

    errors = customer_schema.validate(data)
    if errors:
        raise BadRequestException(message="Invalid Customer Data",
                                  payload=errors)

    data['id'] = current_user['id']

    customer = customer_service.update(data)

    return jsonify(customer)
Exemplo n.º 3
0
def update_user():
    current_user = get_jwt_identity()
    user_schema = UserUpdateInputSchema()
    data = request.get_json()

    errors = user_schema.validate(data)
    if errors:
        raise BadRequestException(message="Invalid User Data", payload=errors)

    data['id'] = current_user['id']
    roles = request.json.get('roles', [])

    user = user_service.update(data, roles)

    return jsonify(user)
def change_customer_password():
    current_user = get_jwt_identity()
    change_password_schema = CustomerChangePasswordUpdateInputSchema()
    data = request.get_json()

    errors = change_password_schema.validate(data)
    if errors:
        raise BadRequestException(message="Invalid Data", payload=errors)

    password = request.json.get('password', '')
    new_password = generate_password_hash(request.json.get('new_password', ''))

    customer_service.change_password(Customer(id=current_user['id'],
                                              password=new_password),
                                     password=password)

    return {}, 200
def generate_customer_token():
    authentication_schema = CustomerAuthenticationInputSchema()
    data = request.get_json()

    errors = authentication_schema.validate(data)
    if errors:
        raise BadRequestException(message="Invalid Authentication Data",
                                  payload=errors)

    email = request.json.get('email', None)
    password = request.json.get('password', None)

    customer = customer_service.login(email=email, password=password)

    # Identity can be any data that is json serializable
    access_token = create_access_token(identity=customer)
    return jsonify(access_token=access_token)
def add_customer():
    customer_schema = CustomerInputSchema()
    data = request.get_json()

    errors = customer_schema.validate(data)
    if errors:
        raise BadRequestException(message="Invalid Customer Data",
                                  payload=errors)

    name = request.json.get('name', None)
    email = request.json.get('email', None)
    password = request.json.get('password', None)

    customer = customer_service.add(
        Customer(name=name,
                 email=email,
                 password=generate_password_hash(password)))

    return jsonify(customer)
Exemplo n.º 7
0
def add_user():
    user_schema = UserInputSchema()
    data = request.get_json()

    errors = user_schema.validate(data)
    if errors:
        raise BadRequestException(message="Invalid User Data", payload=errors)

    name = request.json.get('name', None)
    email = request.json.get('email', None)
    password = request.json.get('password', None)
    roles = list(
        map(lambda category: UserRole(category=category),
            request.json.get('roles', [])))

    user = user_service.add(
        User(name=name,
             email=email,
             password=generate_password_hash(password),
             roles=roles))

    return jsonify(user)
from app.presentation.base_response_exception import ResourceAlreadyExistsException, NotFoundException, \
    UnauthorizedException, BadRequestException

NOT_FOUND_EXCEPTION = NotFoundException(message="Customer not found")
UNAUTHORIZED_EXCEPTION = UnauthorizedException(
    message="Customer not authorized")
RESOURCE_ALREADY_EXISTS_EXCEPTION = ResourceAlreadyExistsException(
    message="Email already in use")
BAD_REQUEST_EXCEPTION = BadRequestException(message="Password mismatch")


class CustomerService:
    def __init__(self, repository):
        self.__repository = repository

    def add(self, customer):
        customer_already_exists = self.__repository.find_by_email(
            customer.email)
        if customer_already_exists:
            raise RESOURCE_ALREADY_EXISTS_EXCEPTION

        customer = self.__repository.add(customer)

        return customer.to_dict()

    def update(self, customer_updated):
        customer = self.__repository.find_by_id(id=customer_updated['id'])
        if customer is None:
            raise NOT_FOUND_EXCEPTION

        customer_exists = self.__repository.find_by_email(