security.py 734 B

12345678910111213141516171819
  1. from datetime import datetime, timedelta, timezone
  2. from typing import Optional, Union, Any
  3. from jose import jwt
  4. from passlib.context import CryptContext
  5. from app.core.config import settings
  6. SECRET_KEY = settings.SECRET_KEY
  7. ALGORITHM = "HS256"
  8. ACCESS_TOKEN_EXPIRE_MINUTES = settings.ACCESS_TOKEN_EXPIRE_MINUTES
  9. def create_access_token(subject: Union[str, Any], expires_delta: Optional[timedelta] = None) -> str:
  10. if expires_delta:
  11. expire = datetime.utcnow() + expires_delta
  12. else:
  13. expire = datetime.utcnow() + timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
  14. to_encode = {"exp": expire, "sub": str(subject)}
  15. encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
  16. return encoded_jwt