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
# Importar routers de módulos
@@ -38,15 +39,23 @@ router.include_router(tenants_router, prefix="/a76", tags=["a76 / tenants"])
router.include_router(user_tenant_router, prefix="/a76", tags=["a76 / user-tenants"])
router.include_router(licenses_router, prefix="/a76", tags=["a76 / licenses"])
router.include_router(pedimentos_router, prefix="/a76")
router.include_router(client_and_provider_router, prefix="/a76", tags=["a76 / clients and providers"])
router.include_router(
client_and_provider_router, prefix="/a76", tags=["a76 / clients and providers"]
)
router.include_router(company_router, prefix="/a76", tags=["a76 / company"])
router.include_router(classes_router, prefix="/a76", tags=["a76 / classes"])
router.include_router(parts_router, prefix="/a76", tags=["a76 / parts"])
router.include_router(permission_rule_oct_router, prefix="/a76", tags=["a76 / PermissionRuleOct"])
router.include_router(
permission_rule_oct_router, prefix="/a76", tags=["a76 / PermissionRuleOct"]
)
router.include_router(package_router, prefix="/a76", tags=["a76 / Package"])
router.include_router(seal_router, prefix="/a76", tags=["a76 / Seal"])
router.include_router(fraction_rule_octave_router, prefix="/a76", tags=["a76 / FractionRuleOctave"])
router.include_router(country_rule_oct_router, prefix="/a76", tags=["a76 / CountryRuleOct"])
router.include_router(
fraction_rule_octave_router, prefix="/a76", tags=["a76 / FractionRuleOctave"]
)
router.include_router(
country_rule_oct_router, prefix="/a76", tags=["a76 / CountryRuleOct"]
)
router.include_router(exchange_rate_router, prefix="/a76", tags=["a76 / ExchangeRate"])
router.include_router(transport_types_router, prefix="/a76", tags=["a76 / TransportTypes"])
router.include_router(trailers_router, prefix="/a76", tags=["a76 / Trailers"])