""" Middleware para agregar headers de no-cache a las respuestas """ from fastapi.responses import HTMLResponse from fastapi.security import HTTPAuthorizationCredentials from starlette.middleware.base import BaseHTTPMiddleware from starlette.requests import Request from starlette.responses import Response from auth.security import get_current_user from config import settings import datetime start_time = datetime.time(10, 0, 0) end_time = datetime.time(23, 30, 0) class InTimeMiddleware(BaseHTTPMiddleware): """ Middleware que revisa si la peticion se hizo dentro del horario de funcionamiento del local 10:00 a 23:30 horario de Chile """ async def dispatch(self, request: Request, call_next): if "admin" in request.headers.get("Origin", "") or "localhost:8000" in request.headers.get("Origin", ""): return await call_next(request) authorization = request.headers.get("Authorization") if not authorization: if settings.IS_OPEN_STORE: return await call_next(request) else: return HTMLResponse(""" Local Cerrando :(
😫

¡El local se encuentra cerrado!

""", status_code=420) time = datetime.datetime.now().time() user = await get_current_user( HTTPAuthorizationCredentials(scheme="Bearer", credentials=authorization) ) if ((time >= start_time and time <= end_time) and settings.IS_OPEN_STORE) or (user.permissions or 0) >= 1: response = await call_next(request) return response else: return HTMLResponse(""" Local Cerrando :(
😫

¡El local se encuentra cerrado!

""", status_code=420)