mirror of
https://github.com/TronoSfera/Law.git
synced 2026-05-18 18:13:46 +03:00
20 lines
786 B
Python
20 lines
786 B
Python
from datetime import datetime, timedelta, timezone
|
|
from jose 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())})
|
|
return jwt.encode(data, secret, algorithm="HS256")
|
|
|
|
def decode_jwt(token: str, secret: str) -> dict:
|
|
return jwt.decode(token, secret, algorithms=["HS256"])
|