|
|
@@ -9,11 +9,17 @@ from starlette.responses import Response
|
|
|
from auth.security import get_current_user
|
|
|
from config import settings
|
|
|
import datetime
|
|
|
+from logging import getLogger
|
|
|
|
|
|
+logger = getLogger(__name__)
|
|
|
|
|
|
start_time = datetime.time(10, 0, 0)
|
|
|
end_time = datetime.time(23, 30, 0)
|
|
|
|
|
|
+class EmptyUser:
|
|
|
+ def __init__(self):
|
|
|
+ self.permissions = 0
|
|
|
+
|
|
|
class InTimeMiddleware(BaseHTTPMiddleware):
|
|
|
"""
|
|
|
Middleware que revisa si la peticion se hizo dentro del horario de funcionamiento del local
|
|
|
@@ -21,7 +27,7 @@ class InTimeMiddleware(BaseHTTPMiddleware):
|
|
|
"""
|
|
|
|
|
|
async def dispatch(self, request: Request, call_next):
|
|
|
- if "admin" in request.headers.get("Origin", "") or "localhost:8000" in request.headers.get("Origin", ""):
|
|
|
+ if "admin" in request.headers.get("Origin", ""):
|
|
|
return await call_next(request)
|
|
|
authorization = request.headers.get("Authorization")
|
|
|
if not authorization:
|
|
|
@@ -52,9 +58,13 @@ class InTimeMiddleware(BaseHTTPMiddleware):
|
|
|
""", status_code=420)
|
|
|
|
|
|
time = datetime.datetime.now().time()
|
|
|
- user = await get_current_user(
|
|
|
+ try:
|
|
|
+ user = await get_current_user(
|
|
|
HTTPAuthorizationCredentials(scheme="Bearer", credentials=authorization)
|
|
|
)
|
|
|
+ except Exception as e:
|
|
|
+ logger.warning(f"Not user verified in {request.url.path}: {e}")
|
|
|
+ user = EmptyUser()
|
|
|
|
|
|
if ((time >= start_time and time <= end_time) and settings.IS_OPEN_STORE) or (user.permissions or 0) >= 1:
|
|
|
response = await call_next(request)
|