(20241217) Mail tags update also doesn't need token key now.
This commit is contained in:
@@ -70,6 +70,7 @@ from shared import constants
|
||||
|
||||
# Data Models:
|
||||
from models.api.mail.tags import MailUpdateTagsRequestHeaders, MailUpdateTagsRequestData
|
||||
from models.core.user import CoreUserInfoModel
|
||||
|
||||
# To work with datatypes:
|
||||
from typing import Literal
|
||||
@@ -80,6 +81,9 @@ import asyncio
|
||||
# To work with date and time:
|
||||
import datetime
|
||||
|
||||
# Helpers:
|
||||
from api.helpers.user import token_check
|
||||
|
||||
|
||||
# *****************************************************************************************************************
|
||||
# ***** ****
|
||||
@@ -167,6 +171,32 @@ async def update_mail_tags(
|
||||
http_code = HttpCodes.UNAUTHORIZED
|
||||
)
|
||||
|
||||
# ┏┓ ┓ ┳┳┓ •┓
|
||||
# ┣ ┏┓╋┏┣┓ ┃┃┃┏┓┓┃
|
||||
# ┻ ┗ ┗┗┛┗ ┛ ┗┗┻┗┗
|
||||
|
||||
# Get the mail:
|
||||
message = await current_app.mail_controller.get_one_mail(
|
||||
mongo_conn = current_app.data_mongo,
|
||||
message_id = inbound_data.messageId
|
||||
)
|
||||
|
||||
# ┏┓ ┓ • ┏┓┓ ┓
|
||||
# ┃┃┓┏┏┏┓┏┓┏┓┏┣┓┓┏┓ ┃ ┣┓┏┓┏┃┏
|
||||
# ┗┛┗┻┛┛┗┗ ┛ ┛┛┗┗┣┛ ┗┛┛┗┗ ┗┛┗
|
||||
# ┛
|
||||
|
||||
# We check if the token that was used to fetch the mail is owned by this user:
|
||||
if not await token_check.is_authorized(
|
||||
mongo_conn=current_app.data_mongo,
|
||||
user_info = CoreUserInfoModel(**kwargs["session_info"]),
|
||||
token_ids = [message.tokenId]
|
||||
): return ResponseModel(
|
||||
status_code = StatusCodes.FAILED,
|
||||
http_code = HttpCodes.UNAUTHORIZED,
|
||||
message = "The message does not belong to this user."
|
||||
)
|
||||
|
||||
# ┳┳ ┓ ┳┳┓ •┓
|
||||
# ┃┃┏┓┏┫┏┓╋┏┓ ┃┃┃┏┓┓┃
|
||||
# ┗┛┣┛┗┻┗┻┗┗ ┛ ┗┗┻┗┗
|
||||
@@ -175,12 +205,16 @@ async def update_mail_tags(
|
||||
# Update the mail:
|
||||
success = await current_app.mail_controller.update_tags(
|
||||
mongo_conn = current_app.data_mongo,
|
||||
token_id = auth_token.authTokenId,
|
||||
message_id = inbound_data.messageId,
|
||||
unset_tags = inbound_data.unsetTags,
|
||||
set_tags = inbound_data.setTags
|
||||
)
|
||||
|
||||
# ┳┓
|
||||
# ┣┫┏┓┏┏┓┏┓┏┓┏┏┓
|
||||
# ┛┗┗ ┛┣┛┗┛┛┗┛┗
|
||||
# ┛
|
||||
|
||||
# Done here:
|
||||
return ResponseModel(
|
||||
status_code = StatusCodes.OK if success else StatusCodes.FAILED,
|
||||
|
||||
@@ -628,7 +628,6 @@ class MailController:
|
||||
@staticmethod
|
||||
async def update_tags(
|
||||
mongo_conn: AsyncMongo,
|
||||
token_id: ObjectId | str,
|
||||
message_id: ObjectId | str,
|
||||
unset_tags: List[str] = None,
|
||||
set_tags: List[str] = None
|
||||
@@ -637,7 +636,6 @@ class MailController:
|
||||
# Simply call the core model:
|
||||
return await current_app.core_message_controller.update_tags(
|
||||
mongo_conn = mongo_conn,
|
||||
token_id = token_id,
|
||||
message_id = message_id,
|
||||
unset_tags = unset_tags,
|
||||
set_tags = set_tags
|
||||
|
||||
@@ -296,7 +296,7 @@ class CoreAuthTokenController(BaseModel):
|
||||
async def get_token_from_key(
|
||||
self,
|
||||
mongo_conn: AsyncMongo,
|
||||
token_key: ObjectId | str = None
|
||||
token_key: ObjectId | str = None,
|
||||
) -> CoreAuthTokenModel | None:
|
||||
|
||||
"""
|
||||
|
||||
@@ -101,11 +101,6 @@ class MailUpdateTagsRequestHeaders(BaseModel):
|
||||
|
||||
class MailUpdateTagsRequestData(BaseModel):
|
||||
|
||||
tokenKey: str = Field(
|
||||
description = "the id of the token associated with the mail; needed for security",
|
||||
frozen = True
|
||||
)
|
||||
|
||||
messageId: str = Field(
|
||||
description = "the mail identifier (Mongo ObjectId) of the document that holds the mail",
|
||||
frozen = True
|
||||
|
||||
Reference in New Issue
Block a user