Add admin panel, cart, checkout, and digital key delivery
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+34
@@ -0,0 +1,34 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user