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

31 lines
1.5 KiB
Markdown

# 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.