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
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)
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)
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
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)
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
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)
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)