Coverage for app/core/security.py: 100%

16 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2026-03-24 11:40 +0000

1from datetime import datetime, timedelta, timezone 

2from typing import Any 

3 

4import jwt 

5from passlib.context import CryptContext 

6 

7from app.core.config import settings 

8 

9pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") 

10 

11 

12ALGORITHM = "HS256" 

13 

14 

15def create_access_token(subject: str | Any, expires_delta: timedelta) -> str: 

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

17 to_encode = {"exp": expire, "sub": str(subject)} 

18 encoded_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm=ALGORITHM) 

19 return encoded_jwt 

20 

21 

22def verify_password(plain_password: str, hashed_password: str) -> bool: 

23 return pwd_context.verify(plain_password, hashed_password) 

24 

25 

26def get_password_hash(password: str) -> str: 

27 return pwd_context.hash(password)