from datetime import datetime, timedelta, UTC from typing import Optional from jose import JWTError, jwt from app.core.config import settings def create_access_token(data: dict, expires_delta: Optional[timedelta] = None) -> str: to_encode = data.copy() if expires_delta is not None: expire = datetime.now(UTC) + expires_delta to_encode.update({"exp": expire}) encoded_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm="HS256") return encoded_jwt def verify_token(token: str) -> Optional[str]: try: payload = jwt.decode(token, settings.SECRET_KEY, algorithms=["HS256"]) phone: str = payload.get("sub") if phone is None: return None return phone except JWTError: return None