Skip to content

Instantly share code, notes, and snippets.

@yezz123
Created June 25, 2021 11:24
Show Gist options
  • Save yezz123/d472992b75c1c5b9560e975607b35850 to your computer and use it in GitHub Desktop.
Save yezz123/d472992b75c1c5b9560e975607b35850 to your computer and use it in GitHub Desktop.
A Json Web Token Context using Python Jose for a FastAPI File core.
from datetime import datetime, timedelta
from typing import Any, Union
from jose import jwt
from passlib.context import CryptContext
from core.config import settings
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
ALGORITHM = "HS256"
def create_access_token(
subject: Union[str, Any], expires_delta: timedelta = None
) -> str:
if expires_delta:
expire = datetime.utcnow() + expires_delta
else:
expire = datetime.utcnow() + timedelta(
minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES
)
to_encode = {"exp": expire, "sub": str(subject)}
encoded_jwt = jwt.encode(
to_encode, settings.SECRET_KEY, algorithm=ALGORITHM)
return encoded_jwt
def verify_password(plain_password: str, hashed_password: str) -> bool:
return pwd_context.verify(plain_password, hashed_password)
def get_password_hash(password: str) -> str:
return pwd_context.hash(password)
@yezz123
Copy link
Author

yezz123 commented Jun 25, 2021

The class for settings here :

class Settings(BaseSettings):
    API_V1_STR = "/api/v1"
    SECRET_KEY: str = secrets.token_urlsafe(64)
    ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 8
    BACKEND_CORS_ORIGINS: List[AnyHttpUrl] = []

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment