Coverage for src/cstlcore/security/jwt.py: 92%

13 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2026-02-19 12:46 +0000

1from datetime import datetime, timedelta, timezone 

2 

3import jwt 

4 

5from cstlcore.settings import settings 

6 

7 

8def create_access_token( 

9 data: dict[str, object], expires_delta: timedelta | None = None 

10): 

11 to_encode = data.copy() 

12 if expires_delta: 

13 expire = datetime.now(timezone.utc) + expires_delta 

14 else: 

15 expire = datetime.now(timezone.utc) + timedelta(minutes=15) 

16 to_encode.update({"exp": expire}) 

17 encoded_jwt = jwt.encode( 

18 to_encode, settings.jwt.secret_key, algorithm=settings.jwt.algorithm 

19 ) 

20 return encoded_jwt 

21 

22 

23def decode_access_token(token: str): 

24 return jwt.decode( 

25 token, settings.jwt.secret_key, algorithms=[settings.jwt.algorithm] 

26 )