def create_user(cls, user_info):

        result = None

        try:
            sql, args = data_adaptor.create_insert(table_name="users",
                                                   row=user_info)
            res, data = data_adaptor.run_q(sql, args)

            msg = {"customers_email": user_info['email']}
            notification.publish_it(msg)

            if res != 1:
                result = None
            else:
                result = user_info['id']
        except pymysql.err.IntegrityError as ie:
            if ie.args[0] == 1062:
                raise (DataException(DataException.duplicate_key))
            else:
                raise DataException()
        except Exception as e:
            raise DataException()

        return result
Exemple #2
0
def user_registration():

    inputs = log_and_extract_input(demo)
    rsp_data = None
    rsp_status = None
    rsp_txt = None

    try:

        r_svc = _get_registration_service()

        if inputs["method"] == "POST":
            #Get the user's information from the POST request
            user_data = inputs["body"]
            #Set default status to pending and generate random id
            user_data['status'] = "PENDING"
            user_data['id'] = str(uuid.uuid4())
            rsp = r_svc.register(user_data)

            if rsp is not None:
                #Send user verification email
                notification.publish_it({"user_email": user_data['email']})
                rsp_data = rsp
                rsp_status = 201
                rsp_txt = "OK"
                link = rsp[0]
                auth = rsp[1]
            else:
                rsp_data = None
                rsp_status = 404
                rsp_txt = "COULD NOT CREATE"
        else:
            rsp_data = None
            rsp_status = 501
            rsp_txt = "Only POST Method Allowed"

        if rsp_data is not None:
            headers = {"Location": "/api/users/" + link}
            headers["Authorization"] =  auth
            full_rsp = Response(json.dumps(rsp_data), status=rsp_status, headers=headers, content_type="application/json")
        else:
            full_rsp = Response(rsp_txt, status=rsp_status, content_type="text/plain")

    except Exception as e:
        log_msg = "/registrations: Exception = " + str(e)
        logger.error(log_msg)
        rsp_status = 500
        rsp_txt = "INTERNAL SERVER ERROR. Please take COMSE6156 -- Cloud Native Applications."
        full_rsp = Response(rsp_txt, status=rsp_status, content_type="text/plain")

    log_response("/registrations", rsp_status, rsp_data, rsp_txt)

    return full_rsp
Exemple #3
0
    def create_user(cls, user_info):

        for f in UsersService.required_create_fields:
            v = user_info.get(f, None)
            if v is None:
                raise ServiceException(ServiceException.missing_field,
                                       "Missing field = " + f)

            if f == 'email':
                if v.find('@') == -1:
                    raise ServiceException(ServiceException.bad_data,
                                           "Email looks invalid: " + v)

        if "id" not in user_info:
            id1 = str(uuid.uuid1())
            user_info['id'] = id1
        result = UsersRDB.create_user(user_info=user_info)

        print("RESULT FOR CREATE USER")
        print(result)
        if result is not None:
            # publish email to the SNS topic
            # sns = boto3.client('sns', region_name='us-east-1')
            # resp = sns.publish(
            #     TopicArn = 'arn:aws:sns:us-east-1:211747076064:tse-email-notif',
            #     Message=user_info['email']
            # )
            resp = publish_it(user_info['email'])
            print(resp)
        return result
Exemple #4
0
    def create_user(cls, user_info):
        for f in UsersService.required_create_fields:
            v = user_info.get(f, None)
            if v is None:
                raise ServiceException(ServiceException.missing_field,
                                       "Missing field = " + f)
            if f == 'email':
                if v.find('@') == -1:
                    raise ServiceException(ServiceException.bad_data,
                                           "Email looks invalid: " + v)
        result = UsersRDB.create_user(user_info=user_info)

        # Publish a simple message to the specified SNS topic
        email = {'customers_email': user_info.get('email')}
        publish_it(json.dumps(email))

        return result
Exemple #5
0
    def create_user(cls, user_info):
        for f in UsersService.required_create_fields:
            v = user_info.get(f, None)
            if v is None:
                raise ServiceException(ServiceException.missing_field,
                                       "Missing field = " + f)

            if f == 'email':
                if v.find('@') == -1:
                    raise ServiceException(ServiceException.bad_data,
                                           "Email looks invalid: " + v)

        result = UsersRDB.create_user(user_info=user_info)
        email = user_info.get("email", None)
        msg = {"email": email}
        notification.publish_it(msg)
        return result
def register():
    last_name = request.args.get("last_name")
    first_name = request.args.get("first_name")
    email = request.args.get("email")
    password = request.args.get("password")

    valid = all([last_name, first_name, email, password])

    user_info = {
        "last_name": last_name,
        "first_name": first_name,
        "email": email,
        "password": password,
        "id": str(uuid4()),
        "status": "PENDING"
    }

    inputs = log_and_extract_input(
        register, {
            "last_name": last_name,
            "first_name": first_name,
            "email": email,
            "password": password
        })

    # http://127.0.0.1:5000/api/registrations?last_name=asd&first_name=dsa&email=fdsafdsgf&password=1123
    # If invalid argument
    if not valid:
        rsp = Response(
            "Some columns are empty. last_name, first_name, email, password are required",
            status=200,
            content_type="test/plain")
        return rsp

    user_data = UsersRDB.get_by_email(user_info["email"], include_deleted=True)
    if user_data:
        if user_data.get("status", None) != "PENDING":
            rsp = Response("User already exist",
                           status=400,
                           content_type="test/plain")
            return rsp
        else:
            notification.publish_it(email)
            rsp = Response("User " + user_data.get("id", "") +
                           " already exist, resent activation email.",
                           status=200,
                           content_type="test/plain")
            return rsp

    try:
        # result = UsersRDB.create_user(user_info)
        result = UserService.create_user(user_info)
        rsp = Response("User created, user ID is:" +
                       (result if result else "") +
                       " please verify your email",
                       status=200,
                       content_type="test/plain")
    except Exception as e:
        rsp = Response("Invalid argument",
                       status=400,
                       content_type="test/plain")
        logger.debug(str(e))
    return rsp