feat: Implement multi-tenancy support in middleware and security layers

- Enhanced TenantMiddleware to validate tenant information from JWT tokens.
- Added LicenseValidationMiddleware to check tenant licenses before processing requests.
- Updated security utilities to extract tenant information from tokens and validate company access.
- Introduced CompanyStore to manage active company state and handle company switching in the frontend.
- Modified API routes to include company_id in requests for better resource management.
- Improved logging and error handling throughout the middleware and API layers.
- Updated frontend components to reflect changes in company management and selection.
- Added new API route for fetching user's companies with proper authentication handling.
This commit is contained in:
2025-11-11 14:00:56 -06:00
parent e1eb6bbd01
commit 52b8fcd434
242 changed files with 7067 additions and 3274 deletions

View File

@@ -2,6 +2,7 @@
Router principal de API v1
Agrega todos los módulos de la aplicación
"""
from fastapi import APIRouter
from .pedimento_codes.routes import router as pedimento_codes_router
@@ -26,20 +27,86 @@ from .incoterms.routes import router as incoterms_router
router = APIRouter()
# Registrar módulos
router.include_router(pedimento_codes_router, prefix="/refrence_data", tags=["public / refrence_data / pedimento_codes"])
router.include_router(payment_methods_router, prefix="/refrence_data", tags=["public / refrence_data / payment_methods"])
router.include_router(containers_router, prefix="/refrence_data", tags=["public / refrence_data / containers"])
router.include_router(countries_router, prefix="/refrence_data", tags=["public / refrence_data / countries"])
router.include_router(material_types_router, prefix="/refrence_data", tags=["public / refrence_data / material_types"])
router.include_router(currency_types_router, prefix="/refrence_data", tags=["public / refrence_data / currency_types"])
router.include_router(states_router, prefix="/refrence_data", tags=["public / refrence_data / states"])
router.include_router(transport_types_router, prefix="/refrence_data", tags=["public / refrence_data / transport_types"])
router.include_router(customs_warehouses_router, prefix="/refrence_data", tags=["public / refrence_data / customs_warehouses"])
router.include_router(valuation_methods_router, prefix="/refrence_data", tags=["public / refrence_data / valuation_methods"])
router.include_router(sectors_router, prefix="/refrence_data", tags=["public / public / refrence_data / sectors"])
router.include_router(transport_modes_router, prefix="/refrence_data", tags=["public / refrence_data / transport_modes"])
router.include_router(customs_sections_router, prefix="/refrence_data", tags=["public / refrence_data / customs_sections"])
router.include_router(invoice_types_router, prefix="/refrence_data", tags=["public / refrence_data / invoice_types"])
router.include_router(code_pedimento_regimens_router, prefix="/refrence_data", tags=["public / refrence_data / code_pedimento_regimens"])
router.include_router(pedimento_regimens_router, prefix="/refrence_data", tags=["public / refrence_data / pedimento_regimens"])
router.include_router(incoterms_router, prefix="/refrence_data", tags=["public / refrence_data / incoterms"])
router.include_router(
pedimento_codes_router,
prefix="/refrence_data",
tags=["public / refrence_data / pedimento_codes"],
)
router.include_router(
payment_methods_router,
prefix="/refrence_data",
tags=["public / refrence_data / payment_methods"],
)
router.include_router(
containers_router,
prefix="/refrence_data",
tags=["public / refrence_data / containers"],
)
router.include_router(
countries_router,
prefix="/refrence_data",
tags=["public / refrence_data / countries"],
)
router.include_router(
material_types_router,
prefix="/refrence_data",
tags=["public / refrence_data / material_types"],
)
router.include_router(
currency_types_router,
prefix="/refrence_data",
tags=["public / refrence_data / currency_types"],
)
router.include_router(
states_router, prefix="/refrence_data", tags=["public / refrence_data / states"]
)
router.include_router(
transport_types_router,
prefix="/refrence_data",
tags=["public / refrence_data / transport_types"],
)
router.include_router(
customs_warehouses_router,
prefix="/refrence_data",
tags=["public / refrence_data / customs_warehouses"],
)
router.include_router(
valuation_methods_router,
prefix="/refrence_data",
tags=["public / refrence_data / valuation_methods"],
)
router.include_router(
sectors_router,
prefix="/refrence_data",
tags=["public / public / refrence_data / sectors"],
)
router.include_router(
transport_modes_router,
prefix="/refrence_data",
tags=["public / refrence_data / transport_modes"],
)
router.include_router(
customs_sections_router,
prefix="/refrence_data",
tags=["public / refrence_data / customs_sections"],
)
router.include_router(
invoice_types_router,
prefix="/refrence_data",
tags=["public / refrence_data / invoice_types"],
)
router.include_router(
code_pedimento_regimens_router,
prefix="/refrence_data",
tags=["public / refrence_data / code_pedimento_regimens"],
)
router.include_router(
pedimento_regimens_router,
prefix="/refrence_data",
tags=["public / refrence_data / pedimento_regimens"],
)
router.include_router(
incoterms_router,
prefix="/refrence_data",
tags=["public / refrence_data / incoterms"],
)