(20250122) Mail module adjustment for sending mails from whitelisted IPs.
This commit is contained in:
@@ -233,23 +233,26 @@ async def send_one_mail(
|
|||||||
# ┗┛┗┻┛┛┗┗ ┛ ┛┛┗┗┣┛ ┗┛┛┗┗ ┗┛┗
|
# ┗┛┗┻┛┛┗┗ ┛ ┛┛┗┗┣┛ ┗┛┛┗┗ ┗┛┗
|
||||||
# ┛
|
# ┛
|
||||||
|
|
||||||
# Get the token based on the key:
|
# We test ownership only in API calls made from outside:
|
||||||
auth_token = await current_app.mail_controller.get_token_from_key(
|
if inbound_headers["Remote-IP"] not in current_app.whitelisted_ips:
|
||||||
mongo_data_conn = current_app.data_mongo,
|
|
||||||
token_key = inbound_data.tokenKey
|
|
||||||
)
|
|
||||||
user_info = CoreUserInfoModel(**kwargs["session_info"])
|
|
||||||
|
|
||||||
# We check if the token that was used to fetch the mail is owned by this user:
|
# Get the token based on the key:
|
||||||
if not await token_check.is_authorized(
|
auth_token = await current_app.mail_controller.get_token_from_key(
|
||||||
mongo_data_conn = current_app.data_mongo,
|
mongo_data_conn = current_app.data_mongo,
|
||||||
user_info = user_info,
|
token_key = inbound_data.tokenKey
|
||||||
token_ids = [auth_token.authTokenId]
|
)
|
||||||
): return ResponseModel(
|
user_info = CoreUserInfoModel(**kwargs["session_info"])
|
||||||
status_code = StatusCodes.FAILED,
|
|
||||||
http_code = HttpCodes.UNAUTHORIZED,
|
# We check if the token that was used to fetch the mail is owned by this user:
|
||||||
message = "The account does not belong to this user."
|
if not await token_check.is_authorized(
|
||||||
)
|
mongo_data_conn = current_app.data_mongo,
|
||||||
|
user_info = user_info,
|
||||||
|
token_ids = [auth_token.authTokenId]
|
||||||
|
): return ResponseModel(
|
||||||
|
status_code = StatusCodes.FAILED,
|
||||||
|
http_code = HttpCodes.UNAUTHORIZED,
|
||||||
|
message = "The account does not belong to this user."
|
||||||
|
)
|
||||||
|
|
||||||
# ┏┓ ┓ ┳┳┓ •┓
|
# ┏┓ ┓ ┳┳┓ •┓
|
||||||
# ┗┓┏┓┏┓┏┫ ┃┃┃┏┓┓┃
|
# ┗┓┏┓┏┓┏┫ ┃┃┃┏┓┓┃
|
||||||
|
|||||||
@@ -344,6 +344,9 @@ async def send_reminders_by_chat(chat_df: pd.DataFrame) -> None:
|
|||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Start with blank variables:
|
||||||
|
log_id = None
|
||||||
|
|
||||||
# Get a list of unique token-keys:
|
# Get a list of unique token-keys:
|
||||||
unique_token_keys = chat_df["tokenKey"].unique().tolist()
|
unique_token_keys = chat_df["tokenKey"].unique().tolist()
|
||||||
|
|
||||||
@@ -373,6 +376,9 @@ async def send_reminders_by_chat(chat_df: pd.DataFrame) -> None:
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Get the log id from the response:
|
||||||
|
log_id = response.json()["logId"]
|
||||||
|
|
||||||
# If the API call failed:
|
# If the API call failed:
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
|
|
||||||
@@ -384,7 +390,7 @@ async def send_reminders_by_chat(chat_df: pd.DataFrame) -> None:
|
|||||||
# Send out an alert if needed:
|
# Send out an alert if needed:
|
||||||
if exception is not None:
|
if exception is not None:
|
||||||
await send_telegram(
|
await send_telegram(
|
||||||
message = f"*Reminders For Work (Chat)*\n\nException: `{exception}`",
|
message = f"*Reminders For Work (Chat)*\n\nException: `{exception}`\n\nLog Id: `{log_id}`",
|
||||||
message_type = "error"
|
message_type = "error"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -400,6 +406,9 @@ async def send_reminders_by_mail(mail_df: pd.DataFrame) -> None:
|
|||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Start with blank variables:
|
||||||
|
log_id = None
|
||||||
|
|
||||||
# Iterate over all the rows and send out the mails:
|
# Iterate over all the rows and send out the mails:
|
||||||
for index, row in mail_df.iterrows():
|
for index, row in mail_df.iterrows():
|
||||||
|
|
||||||
@@ -428,6 +437,9 @@ async def send_reminders_by_mail(mail_df: pd.DataFrame) -> None:
|
|||||||
json = input_json
|
json = input_json
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Get the log id from the response:
|
||||||
|
log_id = response.json()["logId"]
|
||||||
|
|
||||||
# If the API call failed:
|
# If the API call failed:
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
|
|
||||||
@@ -439,7 +451,7 @@ async def send_reminders_by_mail(mail_df: pd.DataFrame) -> None:
|
|||||||
# Send out an alert if needed:
|
# Send out an alert if needed:
|
||||||
if exception is not None:
|
if exception is not None:
|
||||||
await send_telegram(
|
await send_telegram(
|
||||||
message = f"*Reminders For Work (Mail)*\n\nException: `{exception}`",
|
message = f"*Reminders For Work (Mail)*\n\nException: `{exception}`\n\nLog Id: `{log_id}`",
|
||||||
message_type = "error"
|
message_type = "error"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user