fix: solución de bloqueos y estandarización de permisos

This commit is contained in:
2026-04-27 10:47:30 -05:00
parent fa3cbb4d0a
commit 5c2a84e95d
312 changed files with 13889 additions and 7911 deletions

View File

@@ -47,7 +47,7 @@ async def upload_import_file(
current_user: Dict[str, Any] = Depends(get_current_user),
):
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error(f"BOMs import: access validation failed: {e}")
raise HTTPException(status_code=403, detail="Invalid company access")

View File

@@ -52,7 +52,7 @@ async def upload_import_file(
):
"""Subir CSV, guardar en Redis, encolar scan. template_id/document_type distinguen Cambio de régimen vs Regularización."""
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error("Cambio régimen/Regularización import: access validation failed: %s", e)
raise HTTPException(status_code=403, detail="Invalid company access")

View File

@@ -49,7 +49,7 @@ async def upload_import_file(
current_user: Dict[str, Any] = Depends(get_current_user),
):
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error(f"Classes import: access validation failed: {e}")
raise HTTPException(status_code=403, detail="Invalid company access")

View File

@@ -50,10 +50,10 @@ async def upload_import_file(
Fase 1: Subir CSV, guardar en Redis, encolar tarea de escaneo.
"""
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error(f"CP import: access validation failed: {e}")
raise HTTPException(status_code=403, detail="Invalid company access")
raise HTTPException(status_code=403, detail="Invalid company access or missing permissions")
if not file.filename or not file.filename.lower().endswith(".csv"):
raise HTTPException(status_code=400, detail="Solo se permiten archivos .csv")
@@ -166,6 +166,7 @@ async def commit_import_job(
"""
Fase 2: Usuario confirma; se encola la inserción de filas válidas.
"""
validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"]) # company_id will be extracted from Redis meta
r = _get_redis()
commit_id = dispatch_tracked_layouts_csv_commit(
db=db,

View File

@@ -50,10 +50,10 @@ async def upload_import_file(
Fase 1: Subir CSV, guardar en Redis, encolar tarea de escaneo.
"""
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error(f"CB import: access validation failed: {e}")
raise HTTPException(status_code=403, detail="Invalid company access")
raise HTTPException(status_code=403, detail="Invalid company access or missing permissions")
if not file.filename or not file.filename.lower().endswith(".csv"):
raise HTTPException(status_code=400, detail="Solo se permiten archivos .csv")
@@ -166,6 +166,7 @@ async def commit_import_job(
"""
Fase 2: Usuario confirma; se encola la inserción de filas válidas.
"""
validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"]) # company_id will be extracted from Redis meta
r = _get_redis()
commit_id = dispatch_tracked_layouts_csv_commit(
db=db,

View File

@@ -46,7 +46,7 @@ async def upload_import_file(
current_user: Dict[str, Any] = Depends(get_current_user),
):
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error(f"Drivers import: access validation failed: {e}")
raise HTTPException(status_code=403, detail="Invalid company access")

View File

@@ -59,7 +59,7 @@ async def upload_import_file(
Parámetros globales de carga: reemplazar_sin_preguntar (Modo Reemplazar vs Actualizar), date_format (Formato de Fecha).
"""
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error(f"ER import: access validation failed: {e}")
raise HTTPException(status_code=403, detail="Invalid company access")

View File

@@ -48,7 +48,7 @@ async def upload_import_file(
):
"""Subir CSV, guardar en Redis, encolar scan. operation_type=exp para exportación."""
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error("Exportación import: access validation failed: %s", e)
raise HTTPException(status_code=403, detail="Invalid company access")

View File

@@ -55,7 +55,7 @@ async def upload_import_file(
"""
# 1. Validate Access & Get Tenant
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error(f"Access validation failed: {e}")
raise HTTPException(status_code=403, detail="Invalid company access")

View File

@@ -49,7 +49,7 @@ async def upload_import_file(
current_user: Dict[str, Any] = Depends(get_current_user),
):
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error(f"Parts import: access validation failed: {e}")
raise HTTPException(status_code=403, detail="Invalid company access")

View File

@@ -51,7 +51,7 @@ async def upload_import_file(
Fase 1: Subir CSV, guardar en Redis, encolar tarea de escaneo.
"""
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error(f"Pedimentos import: access validation failed: {e}")
raise HTTPException(status_code=403, detail="Invalid company access")

View File

@@ -49,7 +49,7 @@ async def upload_import_file(
current_user: Dict[str, Any] = Depends(get_current_user),
):
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error(f"Trailers import: access validation failed: {e}")
raise HTTPException(status_code=403, detail="Invalid company access")

View File

@@ -49,7 +49,7 @@ async def upload_import_file(
current_user: Dict[str, Any] = Depends(get_current_user),
):
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error("Transportistas import: access validation failed: %s", e)
raise HTTPException(status_code=403, detail="Invalid company access")

View File

@@ -52,7 +52,7 @@ async def upload_import_file(
actualizar=True simula Clarion 'Agr./Actual.'; actualizar=False 'Agr./Reempl.'.
"""
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error(f"FA import: access validation failed: {e}")
raise HTTPException(status_code=403, detail="Invalid company access")

View File

@@ -49,7 +49,7 @@ async def upload_import_file(
current_user: Dict[str, Any] = Depends(get_current_user),
):
try:
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, ["csv_upload.process"])
except Exception as e:
logger.error(f"Vehicles import: access validation failed: {e}")
raise HTTPException(status_code=403, detail="Invalid company access")