Ejemplo n.º 1
0
def reset_password(data):
    debug(logger, "reset_password")
    if "Email" not in data:
        return {"error": True, "msg": "Cannot perform action. No Email"}, 401

    check = get_user_by_email(data["Email"])
    if check.count() == 0:
        info(logger, "User not found for reset password.Ignoring request.")
        return {
            "Status": 0
        }, 200  #We're going to return an OK status since we don't want to allow users to "search" for accounts
    else:
        array = list(check)
        item = array[0]
        item.pop("_id")
        reset_token = generate_password_reset_token(item)
        # pwd = get_encrypted_str(rand_pass)
        encrypted_reset_token = get_encrypted_str(reset_token)
        item["HashedPassword"] = encrypted_reset_token
        item["ChangePasswordOnLogin"] = True
        changed_on = arrow.utcnow()
        changed_by = item["EntityID"]
        ret = save(item, changed_by, changed_on, USER_COLLECTION)
        if ret == None:
            return {"error": True, "msg": "Error happened while saving"}, 500

        debug(logger, reset_token)

        send_password_reset_email(item, reset_token)

        return {"Status": 0}, 200
Ejemplo n.º 2
0
def create_user(data, login_url):

    check = get_user_by_email(data["Email"])
    if check.count() > 0:
        return {
            "error": True,
            "msg": "An user with this email already exists",
            "errorCode": DUPLICATE_USER_ERROR_CODE
        }

    client_id = ""
    is_aegis_administrator = True

    if "IsAegisAdministrator" not in data or data[
            "IsAegisAdministrator"] == False:
        client_id = determine_client_id(data)
        is_aegis_administrator = False

    pwd = generate_random_pwd()
    hashed_pwd = get_encrypted_str(pwd)
    changed_by = get_void_uuid()
    changed_on = arrow.utcnow()
    item = {
        "Email": data["Email"],
        "HashedPassword": hashed_pwd,
        "EmailHash": get_encrypted_str(data["Email"]),
        "EntityID": "",
        "Version": get_void_uuid(),
        "ClientID": client_id,
        "PermissionLevel": data["PermissionLevel"],
        "ChangePasswordOnLogin": True,
        "IsAegisAdministrator": is_aegis_administrator
    }

    if "FirstName" in data:
        item["FirstName"] = data["FirstName"]

    if "LastName" in data:
        item["LastName"] = data["LastName"]

    if "FirstName" in data and "LastName" in data:
        item["DisplayName"] = data["FirstName"] + " " + data["LastName"]

    if "Phone" in data:
        item["Phone"] = data["Phone"]

    if "DisplayName" not in item or item["DisplayName"] == " ":
        item["DisplayName"] = data["Email"]

    ret = save(item, changed_by, changed_on, USER_COLLECTION)

    send_registration_email(item["Email"], pwd, login_url)

    return make_response_obj(ret)
Ejemplo n.º 3
0
def update_user(data):
    check = get_user_by_email(data["Email"])

    user = get_by_id(data["EntityID"], USER_COLLECTION)

    if check.count() > 0:
        ''' If an user exists with input email and is not the same person. Alert as duplicate user'''
        existing_user = list(check)[0]
        debug(logger, existing_user["EntityID"])
        debug(logger, user["EntityID"])
        debug(logger, existing_user["Email"])
        debug(logger, user["Email"])

        if existing_user["EntityID"] != user["EntityID"] and existing_user[
                "Email"] == data["Email"]:
            return {
                "error": True,
                "msg": "An user with this email already exists",
                "errorCode": DUPLICATE_USER_ERROR_CODE
            }

    if "FirstName" in data:
        user["FirstName"] = data["FirstName"]

    if "LastName" in data:
        user["LastName"] = data["LastName"]

    if "Phone" in data:
        user["Phone"] = data["Phone"]

    if "Email" in data:
        user["Email"] = data["Email"]

    if "FirstName" in data and "LastName" in data:
        user["DisplayName"] = data["FirstName"] + " " + data["LastName"]

    if "PermissionLevel" in data:
        user["PermissionLevel"] = data["PermissionLevel"]

    if "IsAcceptedLicense" in data:
        user["IsAcceptedLicense"] = data["IsAcceptedLicense"]

    ret = save(user, get_logged_in_user_id(), arrow.utcnow(), USER_COLLECTION)

    if ret == None:
        return {"error": True, "msg": "Error when saving user"}
    else:
        return make_response_obj(ret)
Ejemplo n.º 4
0
def cancel_password_change(data):
    if "UserAccountID" not in data:
        return {
            "error": True,
            "msg": "Cannot perform action. No user data"
        }, 400

    check = get_by_id(data["UserAccountID"], USER_COLLECTION)
    if not check:
        return {"error": True, "msg": "User does not exist"}, 403

    item = dict(check)

    changed_on = arrow.utcnow()
    item["ChangePasswordOnLogin"] = False
    ret = save(item, data["UserAccountID"], changed_on, USER_COLLECTION)
    if ret == None:
        return {"error": True, "msg": "Saving error"}, 404

    return {"Status": 0}, 200
Ejemplo n.º 5
0
def update_login_data(user):
    user["LastLoginTime"] = str(arrow.utcnow())
    if user["Email"][-10:].lower() == "@gmail.com":
        user["gmail"] = True
    else:
        user["gmail"] = False
    request_headers = {}
    for k, v in request.headers.items():
        request_headers[k] = v

    debug(logger, request_headers)

    if "X-Forwarded-For" in request_headers:
        user["LastLoginIpAdress"] = request_headers['X-Forwarded-For'].split(
            ',')[0]
    else:
        user["LastLoginIpAdress"] = 'n/a'

    user.pop("_id")
    return save(user, user["EntityID"], arrow.utcnow(), USER_COLLECTION)
Ejemplo n.º 6
0
def change_password(data):
    if "UserAccountID" not in data:
        return {
            "error": True,
            "msg": "Cannot perform action. No user data"
        }, 400
    if "NewPassword" not in data:
        return {
            "error": True,
            "msg": "Cannot perform action. Please supply the new password"
        }, 400
    if "CurrentPassword" not in data:
        return {
            "error": True,
            "msg": "Cannot perform action. Please supply current password"
        }, 400

    check = get_by_id(data["UserAccountID"], USER_COLLECTION)
    if not check:
        return {"error": True, "msg": "User does not exist"}, 403

    item = dict(check)

    if item["HashedPassword"] != get_encrypted_str(data["CurrentPassword"]):
        return {
            "error": True,
            "msg": "Invalid current password.",
            "errorCode": INVALID_CURRENT_PASSWORD_ERROR_CODE
        }, 400
    else:
        changed_on = arrow.utcnow()
        item["HashedPassword"] = get_encrypted_str(data["NewPassword"])
        item["ChangePasswordOnLogin"] = False
        ret = save(item, data["UserAccountID"], changed_on, USER_COLLECTION)
        if ret == None:
            return {"error": True, "msg": "Saving error"}, 404
        token = base64_encode(ret["Email"].lower() + ":" +
                              item["HashedPassword"])

        return {"Status": 0, "AuthToken": token}, 200
Ejemplo n.º 7
0
def update_profile_attributes(user, data):
    item = user
    debug(logger, "update_profile_attributes")
    if "FirstName" in data:
        item["FirstName"] = data["FirstName"]

    if "LastName" in data:
        item["LastName"] = data["LastName"]

    if "FirstName" in data and "LastName" in data:
        item["DisplayName"] = data["FirstName"] + " " + data["LastName"]

    if "DisplayName" not in item or item["DisplayName"] == " ":
        item["DisplayName"] = data["Email"]

    if "Email" in data:
        item["Email"] = data["Email"]

    if "Password" in data:
        item["HashedPassword"] = get_encrypted_str(data["Password"])

    if "OfficeID" in data:
        item["OfficeID"] = data["OfficeID"]

    if "DepartmentID" in data:
        item["DepartmentID"] = data["DepartmentID"]

    if "IsAcceptedLicense" in data:
        item["IsAcceptedLicense"] = data["IsAcceptedLicense"]

    if "LastViewedClientID" in data:
        item["LastViewedClientID"] = data["LastViewedClientID"]

    ret = save(item, data["UserAccountID"], arrow.utcnow(), USER_COLLECTION)
    if ret == None:
        return {"error": True, "msg": "Error when saving user"}, 500

    return make_response_obj(ret)
Ejemplo n.º 8
0
		def update_ocr_flag(flag=False):
			file_entry = get_by_id(file_entity_id, FILE_COLLECTION)
			file_entry["OCR"] = flag
			save(file_entry, get_void_uuid(), arrow.utcnow(), FILE_COLLECTION)