prepAI / Backend /app /core /security.py
aki-008's picture
chore: basic backend setup
c9abf3f
raw
history blame
1.06 kB
from datetime import datetime, timedelta
from typing import Optional
from passlib.context import CryptContext
from jose import jwt
from app.config import settings
pwd_context = CryptContext(schemes=["argon2"], deprecated="auto")
def verify_password(plain_password: str, hashed_password:str) -> bool:
password_bytes = plain_password.encode("utf-8")[:72]
plain_password_truncated = password_bytes.decode("utf-8", errors="ignore")
return pwd_context.verify(plain_password, hashed_password)
def get_password_hash(password: str) -> str:
password_bytes = password.encode('utf-8')[:72]
password_truncated = password_bytes.decode("utf-8", errors='ignore')
return pwd_context.hash(password_truncated)
def create_access_token(data: dict, expires_deltas: Optional[timedelta] = None) -> str:
to_encode = data.copy()
expire = datetime.now() + (expires_deltas or timedelta(minutes=15))
to_encode.update({"exp": expire})
encoded_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm=settings.ALGORITHM)
return encoded_jwt