fix(security): improve tenant ID resolution and error handling for hub_admin access
This commit is contained in:
@@ -721,7 +721,6 @@ async def get_all_movements(
|
||||
logger.warning(f"Email sending failed: {str(email_error)} - continuing with report generation")
|
||||
|
||||
return movements
|
||||
return movements
|
||||
except ValueError as e:
|
||||
logger.warning(f"Validation error fetching all movements: {str(e)}")
|
||||
raise HTTPException(
|
||||
@@ -761,11 +760,18 @@ def generate_invoice_report_async(
|
||||
# validate_access_to_resource returns the integer tenant_id from DB
|
||||
tenant_id = validate_access_to_resource(db, company_id, current_user, ["report.process"])
|
||||
|
||||
# Guardia explícita: tenant_id debe ser un entero positivo antes del dispatch a Celery.
|
||||
# Un valor inválido aquí generaría un reporte sin filtro de tenant o un crash en la tarea.
|
||||
if not isinstance(tenant_id, int) or tenant_id <= 0:
|
||||
raise HTTPException(
|
||||
status_code=400,
|
||||
detail="No se pudo determinar el tenant para esta empresa. Verifica que la empresa exista.",
|
||||
)
|
||||
|
||||
# Serialize filters to dict for Celery
|
||||
filter_data = filters.model_dump()
|
||||
user_email = current_user.get('email')
|
||||
|
||||
# tenant_id ya validado por validate_access_to_resource
|
||||
task = track_and_dispatch(
|
||||
db=db,
|
||||
task=generate_invoice_movements_async,
|
||||
|
||||
Reference in New Issue
Block a user