Exemple #1
0
    def post(self):
        """Creates a new user."""
        post_data = request.get_json()
        username = post_data.get("username")
        email = post_data.get("email")
        password = post_data.get("password")
        role = post_data.get("role")
        sponsor_logo = post_data.get("sponsor_logo")
        sponsor_headline = post_data.get("sponsor_headline")
        sponsor_slug = post_data.get("sponsor_slug")
        response_object = {}

        user = get_user_by_email(email)
        if user:
            response_object["message"] = "Sorry. That email already exists."
            return response_object, 400
        new_user = add_user(username, email, password, role)
        response_object["user_id"] = new_user.id
        response_object[
            "message"] = message = f"A new user with email {email} was added!"

        try:
            # print(f"Sending email to {email}")
            msg = "New user account created in GoodDriver App for email: " + email
            send_email("*****@*****.**", "New user created.", msg)
            # Req Change 3:
            send_email(email, "New user account created in GoodDriver App",
                       "Welcome to the GoodDriver App!")
        except:
            pass

        return response_object, 201
Exemple #2
0
    def post(self):
        post_data = request.get_json()
        username = post_data.get("username")
        email = post_data.get("email")
        password = post_data.get("password")

        user = get_user_by_email(email)
        if user:
            auth_namespace.abort(400, "Sorry. That email already exists.")
        user = add_user(username, email, password)
        return user, 201
Exemple #3
0
    def post(self):
        """Register and returns new user."""
        payload = request.get_json()
        username = payload.get("username")
        email = payload.get("email")
        password = payload.get("password")

        user = get_user_by_email(email)
        if user:
            namespace.abort(400, f"User with email {email} already exists")
        user = add_user(username, email, password)

        return user, 201
Exemple #4
0
    def post(self):
        post_data = request.get_json()
        username = post_data.get("username")
        email = post_data.get("email")
        response_object = {}

        user = get_user_by_email(email)
        if user:
            response_object["message"] = "Sorry. That email already exists."
            return response_object, 400
        add_user(username, email)
        response_object["message"] = f"{email} was added!"
        return response_object, 201
Exemple #5
0
def register():
    print(request)
    post_data = request.get_json()
    username = post_data['username']
    email = post_data['email']
    password = post_data['password']
    response_object = {}
    user = get_user_by_email(email)
    if user:
        response_object["message"] = "Sorry. That email already exists."
        return response_object, 400
    add_user(username, email, password)
    response_object["message"] = f"{email} was added!"
    return response_object, 201
Exemple #6
0
    def post(self):
        """Creates a new user."""
        post_data = request.get_json()
        username = post_data.get("username")
        email = post_data.get("email")
        password = post_data.get("password")  # new
        response_object = {}

        user = get_user_by_email(email)
        if user:
            response_object["message"] = "Sorry. That email already exists."
            return response_object, 400
        add_user(username, email, password)  # updated
        response_object["message"] = f"{email} was added!"
        return response_object, 201
Exemple #7
0
    def post(self):
        post_data = request.get_json()
        email = post_data.get("email")
        password = post_data.get("password")

        user = get_user_by_email(email)
        if not user or not bcrypt.check_password_hash(user.password, password):
            auth_namespace.abort(404, "User does not exist")
        access_token = user.encode_token(user.id, "access")
        refresh_token = user.encode_token(user.id, "refresh")

        response_object = {
            "access_token": access_token.decode(),
            "refresh_token": refresh_token.decode(),
        }
        return response_object, 200
Exemple #8
0
    def post(self):
        post_data = request.get_json()
        email = post_data.get("email")
        password = post_data.get("password")
        response_object = {}

        user = get_user_by_email(email)
        if not user:
            auth_namespace.abort(404, "User does not exist")

        lockout_time = datetime.now() - timedelta(
            seconds=current_app.config.get("LOCKOUT_INTERVAL"))
        if user.failed_attempts >= 3 and user.failed_attempt_timer and lockout_time < user.failed_attempt_timer:
            print(f"Exceeded 3 failed attempts")
            auth_namespace.abort(401, "Exceeded failed login attempts.")

        print(f"lockout_time: {lockout_time}")
        print(f"user.failed_attempt_timer: {user.failed_attempt_timer}")

        if not bcrypt.check_password_hash(user.password, password):
            if user.failed_attempts == 0:
                time = func.now()
                count = user.failed_attempts + 1
            else:
                time = user.failed_attempt_timer
                count = user.failed_attempts + 1

            update_failed_access_attempt(user, count, time)
            print(f"failed_attempts: {user.failed_attempts}")
            print(f"failed_attempt_timer: {user.failed_attempt_timer}")
            auth_namespace.abort(401, "Incorrect email or password.")
        else:
            access_token = user.encode_token(user.id, "access")
            refresh_token = user.encode_token(user.id, "refresh")
            # print(f"User: {user.id}")
            update_failed_access_attempt(user, 0, None)
            print(f"failed_attempts: {user.failed_attempts}")

            response_object = {
                "access_token": access_token.decode(),
                "refresh_token": refresh_token.decode(),
                "user_id": user.id,
            }
            return response_object, 200
Exemple #9
0
    def post(self):
        """Validates credentials and returns access and refresh tokens on success."""

        payload = request.get_json()
        email = payload.get("email")
        password = payload.get("password")

        user = get_user_by_email(email)
        if not user or not user.check_password(password):
            namespace.abort(
                401,
                f"User with given email {email} or password does not exists")

        access_token = User.encode_token(user.id, "access").decode()
        refresh_token = User.encode_token(user.id, "refresh").decode()

        return {
            "access_token": access_token,
            "refresh_token": refresh_token
        }, 200
Exemple #10
0
    def put(self, user_id):
        """Updates the user."""

        payload = request.get_json()
        username = payload.get("username")
        email = payload.get("email")

        user = get_user_by_id(user_id)
        if not user:
            namespace.abort(404, f"User with id {user_id} does not exists")

        if get_user_by_email(email) != user:
            namespace.abort(400, f"{email} is already taken")

        update_user(user, username, email)

        return {
            "message": f"User {email} was updated",
            "status": "success"
        }, 200
Exemple #11
0
    def post(self):
        """Creates a new user."""

        payload = request.get_json()
        username = payload.get("username")
        email = payload.get("email")
        password = payload.get("password")

        user = get_user_by_email(email)
        if not user:
            add_user(username, email, password)
            return {
                "message": f"user {email} was created",
                "status": "success"
            }, 201
        else:
            return {
                "message": f"user {email} already exists",
                "status": "failed"
            }, 400
Exemple #12
0
def login():
    post_data = request.get_json()
    email = post_data['email']
    password = post_data['password']
    response_object = {}
    user = get_user_by_email(email)
    if not user or not bcrypt.check_password_hash(user.password, password):
        response_object["message"] = "User does not exist"
        return response_object, 404

    access_token = user.encode_token(user.id, "access")
    refresh_token = user.encode_token(user.id, "refresh")

    response_object = {
        'status': 'success',
        'message': 'Successfully logged in.',        
        "access_token": access_token.decode(),
        "refresh_token": refresh_token.decode(),
    }
    # return make_response(jsonify(responseObject)), 200 - no longer needed
    return response_object, 200
Exemple #13
0
def get_email(email):
    user = get_user_by_email(email)
    data = user.to_json()
    response = jsonify(data)
    return response