File size: 1,149 Bytes
c6cc0f2
faa9d54
c6cc0f2
faa9d54
aabf8ec
c6cc0f2
faa9d54
c6cc0f2
faa9d54
c6cc0f2
 
 
 
 
 
 
 
 
 
 
faa9d54
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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)