Skip to content

Matriz de Roles y Permisos

PROXIMITI utiliza cuatro roles gestionados por Keycloak. Cada rol otorga acceso a endpoints especificos del BFF y pantallas del portal/app. Los roles estan embebidos en el token JWT bajo realm_access.roles.

Roles

RolAudienciaCanal de Acceso
USER_PUDOOperadores de centro PUDOApp Flutter PUDO Manager, Portal Cliente
USER_CARRIERConductores transportistasApp Flutter Transportista, Portal Cliente
USER_ADMINAdministradores de plataformaPortal Cliente (panel de administracion)
USER_CUSTOMERClientes finales / remitentesPortal Cliente (shell de cliente)

Matriz de Permisos

AccionEndpointUSER_PUDOUSER_CARRIERUSER_ADMINUSER_CUSTOMER
Seguimiento de paquete (publico)GET /api/v1/public/track/{barcode}------------
Ver dashboardGET /api/v1/dashboardSiSiSiNo
Listar expedicionesGET /api/v1/shipmentsSiSiSiNo
Ver detalle de expedicionGET /api/v1/shipments/{barcode}SiSiSiNo
Crear expedicionPOST /api/v1/shipmentsSiSiSiNo
Generar etiquetaGET /api/v1/shipments/{barcode}/labelSiSiSiNo
Recibir expedicion en PUDOPOST /api/v1/shipments/{barcode}/receiveSiNoSiNo
Entregar expedicion con PODPOST /api/v1/shipments/{barcode}/deliverSiNoSiNo
Token de subida PODPOST /api/v1/shipments/{barcode}/pod/upload-tokenSiNoSiNo
Ver metadatos PODGET /api/v1/shipments/{barcode}/podSiSiSiNo
Ver imagen PODGET /api/v1/shipments/{barcode}/pod/image/{type}SiSiSiNo
Iniciar intercambio transportistaPOST /api/v1/shipments/{barcode}/carrier-handshakeNoSiSiNo
Validar sesion QRPOST /api/v1/shipments/qr-session/{token}/validateSiNoSiNo
Consultar estado de sesion QRGET /api/v1/shipments/qr-session/{token}/statusSiSiSiNo
Entrega multiple de paquetesPOST /api/v1/shipments/batch-dropSiSiSiNo
Recoger paquete caducadoPOST /api/v1/shipments/{barcode}/retrieveNoSiSiNo
Gestionar incidencias/reclamacionesGET/POST /api/v1/issues/*SiSiSiNo
Ver niveles de preciosGET /api/v1/pricing/*SiSiSiSi
Gestionar precios (CRUD)POST/PUT/DELETE /api/v1/pricing/admin/*NoNoSiNo
Gestionar usuariosGET/POST /api/v1/admin/users/*NoNoSiNo
Gestionar centrosGET/POST /api/v1/admin/centers/*NoNoSiNo
Sincronizar catalogos de proveedoresPOST /api/v1/admin/adapter/*NoNoSiNo
Ver dashboard de clienteGET /api/v1/customer/dashboardNoNoNoSi
Ver expediciones de clienteGET /api/v1/customer/shipmentsNoNoNoSi
Gestionar direcciones de entregaGET/POST /api/v1/customer/addressesNoNoNoSi
Ver perfil de clienteGET /api/v1/customer/profileNoNoNoSi

INFO

Seguimiento de paquete es el unico endpoint completamente publico (no requiere autenticacion). Todos los demas endpoints requieren un JWT valido. Las marcas --- indican que el endpoint es accesible sin ningun rol.

Resumen de Reglas de Seguridad

El SecurityConfig.java del BFF define estas reglas en orden de precedencia:

  1. /api/v1/public/**permitAll() (sin autenticacion)
  2. /api/v1/customer/**hasRole("USER_CUSTOMER")
  3. /api/v1/admin/**hasRole("USER_ADMIN")
  4. /api/v1/pricing/admin/**hasRole("USER_ADMIN")
  5. /api/v1/shipments/batch-drophasAnyRole("USER_PUDO", "USER_CARRIER", "USER_ADMIN")
  6. /api/v1/shipments/*/actionhasAnyRole("USER_PUDO", "USER_CARRIER", "USER_ADMIN")
  7. Todo lo demas — authenticated() (cualquier JWT valido)

WARNING

USER_CUSTOMER no puede acceder a endpoints de operador/admin aunque la regla por defecto sea authenticated(). La regla /api/v1/customer/** coincide primero, y su JWT solo contiene el rol USER_CUSTOMER — quedan excluidos de las verificaciones hasAnyRole en endpoints de accion de expediciones.

Ecosistema PUDO de PROXIMITI — documentacion interna