Law/app/core/security.py
2026-02-23 18:39:36 +03:00

21 lines
836 B
Python

from datetime import datetime, timedelta, timezone
import jwt
from passlib.context import CryptContext
pwd_context = CryptContext(schemes=["pbkdf2_sha256"], deprecated="auto")
def hash_password(password: str) -> str:
return pwd_context.hash(password)
def verify_password(password: str, password_hash: str) -> bool:
return pwd_context.verify(password, password_hash)
def create_jwt(payload: dict, secret: str, expires_delta: timedelta) -> str:
now = datetime.now(timezone.utc)
data = payload.copy()
data.update({"iat": int(now.timestamp()), "exp": int((now + expires_delta).timestamp())})
token = jwt.encode(data, secret, algorithm="HS256")
return str(token)
def decode_jwt(token: str, secret: str) -> dict:
return jwt.decode(token, secret, algorithms=["HS256"], options={"require": ["iat", "exp"]})