Files
shop-pip/app/auth.py
T

35 lines
956 B
Python

from __future__ import annotations
import hashlib
import secrets
from fastapi import Request
from app.config import get_settings
def _secure_equal(left: str, right: str) -> bool:
left_digest = hashlib.sha256(left.encode("utf-8")).digest()
right_digest = hashlib.sha256(right.encode("utf-8")).digest()
return secrets.compare_digest(left_digest, right_digest)
def is_admin(request: Request) -> bool:
return bool(request.session.get("is_admin"))
def login_admin(request: Request, username: str, password: str) -> bool:
settings = get_settings()
if _secure_equal(username, settings.admin_username) and _secure_equal(
password, settings.admin_password
):
request.session["is_admin"] = True
request.session["admin_user"] = username
return True
return False
def logout_admin(request: Request) -> None:
request.session.pop("is_admin", None)
request.session.pop("admin_user", None)