Coverage for apps/inners/use_cases/authorizations/session_authorization.py: 72%
18 statements
« prev ^ index » next coverage.py v7.6.1, created at 2024-09-22 19:03 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2024-09-22 19:03 +0000
1import uuid
2from datetime import datetime, timedelta, timezone
4from starlette.datastructures import State
6from apps.inners.models.daos.session import Session
7from apps.inners.models.dtos.contracts.requests.authorizations.refresh_access_token_body import RefreshAccessTokenBody
8from apps.inners.use_cases.managements.account_management import AccountManagement
9from apps.inners.use_cases.managements.session_management import SessionManagement
12class SessionAuthorization:
13 def __init__(
14 self,
15 session_management: SessionManagement,
16 account_management: AccountManagement
17 ):
18 self.session_management = session_management
19 self.account_management = account_management
21 async def refresh_access_token(self, state: State, body: RefreshAccessTokenBody) -> Session:
22 found_session: Session = await self.session_management.find_one_by_refresh_token(
23 state=state,
24 refresh_token=body.refresh_token
25 )
26 current_time = datetime.now(tz=timezone.utc)
27 found_session.access_token = str(uuid.uuid4())
28 found_session.access_token_expired_at = current_time + timedelta(minutes=15)
29 patched_session: Session = await self.session_management.patch_one_by_id_raw(
30 state=state,
31 id=found_session.id,
32 session_patcher=found_session
33 )
35 return patched_session