Spaces:
Running
Running
File size: 852 Bytes
19ad8c9 50b9503 19ad8c9 3abc975 50b9503 19ad8c9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # app/core/security.py
from datetime import datetime, timedelta
from jose import jwt
from passlib.context import CryptContext
from app.core.config import settings
import random
pwd_context = CryptContext(
schemes=["bcrypt_sha256"],
deprecated="auto"
)
def generate_otp():
return str(random.randint(100000, 999999))
def hash_password(p: str) -> str:
return pwd_context.hash(p)
def verify_password(plain: str, hashed: str) -> bool:
return pwd_context.verify(plain, hashed)
def create_access_token(data: dict, expires_minutes: int | None = None) -> str:
to_encode = data.copy()
expire = datetime.utcnow() + timedelta(
minutes=expires_minutes or settings.ACCESS_TOKEN_EXPIRE_MINUTES
)
to_encode.update({"exp": expire})
return jwt.encode(to_encode, settings.JWT_SECRET, algorithm=settings.JWT_ALGORITHM) |