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

@@ -32,7 +32,7 @@ async def list_drivers(
db: Session = Depends(get_core_db),
current_user: dict = Depends(get_current_user),
):
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, required_permissions=["drivers.view"])
drivers = DriverService.list_drivers(db, str(company_id), tenant_id)
total = len(drivers)
@@ -56,7 +56,7 @@ async def read_driver(
db: Session = Depends(get_core_db),
current_user: dict = Depends(get_current_user),
):
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, required_permissions=["drivers.view"])
driver = DriverService.get_driver_by_key_and_line(
db, transporter_key, line, str(company_id), tenant_id
)
@@ -73,7 +73,7 @@ async def create_driver(
):
# Validar acceso a la empresa del cuerpo
tenant_id = validate_access_to_resource(
db, driver_data.company_id, current_user
db, driver_data.company_id, current_user, required_permissions=["drivers.create"]
)
tk = (driver_data.transporter_key or "").strip()
# Buscar transportista: primero exacto, luego ignorando mayúsculas
@@ -124,7 +124,7 @@ async def update_driver(
db: Session = Depends(get_core_db),
current_user: dict = Depends(get_current_user),
):
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, required_permissions=["drivers.edit"])
try:
driver = DriverService.update_driver(
db,
@@ -152,7 +152,7 @@ async def delete_driver(
db: Session = Depends(get_core_db),
current_user: dict = Depends(get_current_user),
):
tenant_id = validate_access_to_resource(db, company_id, current_user)
tenant_id = validate_access_to_resource(db, company_id, current_user, required_permissions=["drivers.delete"])
driver = DriverService.delete_driver(
db, transporter_key, line, str(company_id), tenant_id
)

View File

@@ -27,5 +27,10 @@ crud_router = TenantCRUDRoutes(
enable_filters=True,
default_page_size=50,
max_page_size=100,
list_permissions=["trailers.view"],
get_permissions=["trailers.view"],
create_permissions=["trailers.create"],
update_permissions=["trailers.edit"],
delete_permissions=["trailers.delete"],
).router
router.include_router(crud_router)

View File

@@ -1,18 +1,12 @@
from fastapi import APIRouter
from api.v1.common.tenant_crud_routes import TenantCRUDRoutes
from .dto import TransporterCreateDTO, TransporterResponseDTO, TransporterUpdateDTO
from .services import TransporterService
from api.v1.modules.a76.layouts_csv.transportistas.routes import router as imports_router
# Main router: transporters CRUD + CSV imports
router = APIRouter()
# CSV import (upload → scan → status → commit)
router.include_router(imports_router, prefix="/transporters/imports", tags=["a76 / transporters / csv_import"])
# CRUD routes
crud_router = TenantCRUDRoutes(
service=TransporterService,
create_schema=TransporterCreateDTO,
@@ -21,11 +15,17 @@ crud_router = TenantCRUDRoutes(
prefix="/transporters",
tags=[],
resource_name="Transporter",
id_name="transporter_key", # Using transporter_key instead of numeric ID
id_type=str, # Specify that the ID is a string
enable_list=True, # Enable GET /transporters with pagination
enable_filters=True, # Enable filtering by name and rfc
id_name="transporter_key",
id_type=str,
enable_list=True,
enable_filters=True,
default_page_size=50,
max_page_size=100,
list_permissions=["transporters.view"],
get_permissions=["transporters.view"],
create_permissions=["transporters.create"],
update_permissions=["transporters.edit"],
delete_permissions=["transporters.delete"],
).router
router.include_router(crud_router)
router.include_router(crud_router)

View File

@@ -27,5 +27,10 @@ crud_router = TenantCRUDRoutes(
enable_filters=True,
default_page_size=50,
max_page_size=100,
list_permissions=["vehicles.view"],
get_permissions=["vehicles.view"],
create_permissions=["vehicles.create"],
update_permissions=["vehicles.edit"],
delete_permissions=["vehicles.delete"],
).router
router.include_router(crud_router)