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:
@@ -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"],
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user