brestok's picture
add account CRUD
aabf8ec
raw
history blame contribute delete
768 Bytes
from fastapi import HTTPException
from trauma.api.account.model import AccountModel
from trauma.api.security.schemas import LoginAccountRequest
from trauma.core.config import settings
from trauma.core.security import verify_password
async def authenticate_account(data: LoginAccountRequest) -> AccountModel:
account = await settings.DB_CLIENT.accounts.find_one(
{"email": data.email},
collation={"locale": "en", "strength": 2})
if account is None:
raise HTTPException(status_code=404, detail="Invalid email or password.")
account = AccountModel.from_mongo(account)
if not verify_password(data.password, account.password):
raise HTTPException(status_code=401, detail="Invalid email or password.")
return account