Files
mercadodevida/spec/product.md
2026-08-22 08:35:46 +02:00

1.5 KiB

F-154 — Admin: separate customers from internal users

Problem

El panel admin muestra usuarios mezclados. GET /users (módulo users) devuelve TODOS los identity_users (clientes + backoffice) y GET /admin/users (módulo security) por defecto también devuelve todos. La página Customers llama a /api/users y la página Users llama a /api/admin/users; como ambos devuelven todo, ambos listados aparecen mezclados (conceptos de identity/storefront con backoffice en un mismo listado).

Goal

Customers muestra SOLO clientes storefront (role = 'customer'); Users muestra SOLO usuarios internos/backoffice (role != 'customer'). Separación forzada en el backend (single source of truth), no solo filtrado cliente.

Scope IN

  • project/src/modules/users (listCustomers / GET /users): filtrar role = 'customer'.
  • project/src/modules/security (GET /admin/users): default role != 'customer'; ?role=admin|editor sigue afinando dentro de internos.
  • project/apps/admin/.../users/page.tsx: quitar opción customer del dropdown (Users = backoffice).
  • Tests unitarios (mock pool, sin DB) + actualizar itest AC2/AC3.

Scope OUT

  • No se crea /customers (el cliente ya consume /users).
  • /users/:id, /users/:id/addresses (owner-or-admin) siguen sin filtro por rol (un admin ve el perfil de cualquier usuario; un cliente ve el suyo).
  • No migración (identity_users.role ya existe, NOT NULL con default 'customer').
  • Frontend Customer page: sin cambio (ya llama /users → ahora customer-only).

Type

fix — high priority / high risk.