Просмотр исходного кода

Refactor InTimeMiddleware to improve user verification and logging

Erwin Jacimino 6 месяцев назад
Родитель
Сommit
bcb1bf461b
1 измененных файлов с 12 добавлено и 2 удалено
  1. 12 2
      middleware/in_time.py

+ 12 - 2
middleware/in_time.py

@@ -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)