forked from pgorecki/python-ddd
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdependencies.py
More file actions
30 lines (21 loc) · 955 Bytes
/
Copy pathdependencies.py
File metadata and controls
30 lines (21 loc) · 955 Bytes
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
28
29
30
from typing import Annotated
from fastapi import Depends, Request
from fastapi.security import OAuth2PasswordBearer
from lato import Application, TransactionContext
from modules.iam.application.services import IamService
from modules.iam.domain.entities import User
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
async def get_application(request: Request) -> Application:
return request.state.lato_application
async def get_transaction_context(
app: Annotated[Application, Depends(get_application)],
) -> TransactionContext:
"""Creates a new transaction context for each request"""
async with app.transaction_context() as ctx:
yield ctx
async def get_authenticated_user(
access_token: Annotated[str, Depends(oauth2_scheme)],
ctx: Annotated[TransactionContext, Depends(get_transaction_context)],
) -> User:
current_user = ctx[IamService].find_user_by_access_token(access_token)
return current_user