Exemplo n.º 1
0
from pydantic import BaseModel
from hashlib import sha256

import secrets

app = FastAPI()

app.secret_key = "very constant and random secret, best sixty four (64) characters"
app.tokens_list = []
security = HTTPBasic()

class Patient(BaseModel):
    name: str
    surename: str
app.countRoot = 0
app.countWelc = 0
app.patients = []

def log_in_and_get_token(credentials: HTTPBasicCredentials = Depends(security)):
    correct_username = secrets.compare_digest(credentials.username, "trudnY")
    correct_password = secrets.compare_digest(credentials.password, "PaC13Nt")
    if not (correct_username and correct_password):
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Incorrect email or password",
            headers={"WWW-Authenticate": "Basic"},
        )
    token = sha256(bytes(f"{credentials.username}{credentials.password}{app.secret_key}", encoding='utf8')).hexdigest()
    app.tokens_list.append(token)
    return token