feat: Implement dynamic backend URL configuration and streamline logout process by centralizing audit logging.

This commit is contained in:
Galindo97
2026-02-11 16:22:03 -06:00
parent dfd9c06b06
commit 85ca22e574
9 changed files with 130 additions and 162 deletions

View File

@@ -1,7 +1,7 @@
"""
Audit Log Service
"""
from datetime import datetime
from datetime import datetime, timedelta
import pytz
from typing import Optional, List, Dict, Any
from sqlalchemy.orm import Session
@@ -154,12 +154,14 @@ class AuditService:
@staticmethod
def log_login(db: Session, username: str, ip_address: str = None, user_agent: str = None):
# Prevent duplicate login logs (debounce 5 seconds)
# This handles cases where frontend might submit twice or redirects trigger re-auth
try:
# Timezone handling: Use UTC for consistency
now = datetime.now(pytz.UTC)
five_seconds_ago = now - datetime.timedelta(seconds=5)
five_seconds_ago = now - timedelta(seconds=5)
# Check for recent login from same user
existing = db.query(AuditLog).filter(
@@ -170,12 +172,12 @@ class AuditService:
).first()
if existing:
print(f"[AUDIT DEBUG] Duplicate login skipped for {username} within 5s")
return existing
except Exception as e:
print(f"[AUDIT WARNING] Failed to check duplicate login: {e}")
import traceback
traceback.print_exc()
return AuditService.create_audit_log(
db=db,
reference="LOGIN",
@@ -206,4 +208,4 @@ class AuditService:
)
except Exception as e:
# No re-lanzamos la excepción para no interrumpir el flujo de logout
print(f"Error logging logout: {e}")
pass