(20250122) Mail module adjustment for sending mails from whitelisted IPs.

This commit is contained in:
2025-01-22 16:29:46 +05:30
parent 154a9c3e95
commit 55ada94cda
2 changed files with 32 additions and 17 deletions
+18 -15
View File
@@ -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."
)
# ┏┓ ┓ ┳┳┓ •┓ # ┏┓ ┓ ┳┳┓ •┓
# ┗┓┏┓┏┓┏┫ ┃┃┃┏┓┓┃ # ┗┓┏┓┏┓┏┫ ┃┃┃┏┓┓┃
+14 -2
View File
@@ -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"
) )