from trauma.api.account.dto import AccessToken from trauma.api.account.model import AccountModel from trauma.api.security import security_router from trauma.api.security.db_requests import authenticate_account, register_account from trauma.api.security.schemas import (LoginAccountResponse, LoginAccountWrapper, LoginAccountRequest, RegisterAccountRequest) from trauma.core.security import create_access_token from trauma.core.wrappers import TraumaResponseWrapper @security_router.post('/login') async def login(data: LoginAccountRequest) -> LoginAccountWrapper: account = await authenticate_account(data) access_token = create_access_token(account.email, str(account.id)) response = LoginAccountResponse( accessToken=AccessToken(value=access_token), account=account, ) return LoginAccountWrapper(data=response) @security_router.post('/register') async def register(data: RegisterAccountRequest) -> TraumaResponseWrapper[AccountModel]: account = await register_account(data) return TraumaResponseWrapper(data=account)