- Added SequelizeProformaV2RecipientDomainMapper for mapping recipient data to domain model. - Introduced SequelizeProformaV2TaxesDomainMapper for handling tax data mapping. - Created SequelizeProformaV2RecipientSummaryMapper for summarizing recipient information. - Developed SequelizeProformaV2SummaryMapper for mapping Proforma summary data. - Implemented SequelizeProformaRepositoryV2 for managing Proforma data persistence. - Added SequelizeProformaV2NumberGenerator for generating Proforma numbers. |
||
|---|---|---|
| .. | ||
| src | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
modules/identity
identity es el runtime nuevo de autenticación, sesión y acceso por memberships del ERP.
Responsabilidades
Gestiona:
Account- login
- refresh
- logout
- session
RefreshTokenCompanyMembership- acceso
account-company - roles/permisos futuros
No gestiona:
- la ficha operativa completa de empresa
companySlugen auth- el tenant dentro del access token
Endpoints activos
POST /identity/auth/login
POST /identity/auth/refresh
POST /identity/auth/logout
GET /identity/auth/session
El endpoint para companies accesibles es:
GET /companies/available
Ese endpoint pertenece al flujo actual, pero no implica que identity deba exponer GET /identity/companies.
Access token
El access token contiene solo:
{
accountId: string;
email: string;
}
No debe contener:
companyIdcompanySlug- roles
- permisos
Middlewares públicos
Para rutas autenticadas sin tenant:
router.use(...requireIdentityAuthenticated(params));
Para rutas tenant-scoped:
router.use(...requireIdentityTenant(params));
Código backend nuevo no debe usar:
@erp/auth/apimockUserrequireAuthenticatedlegacyrequireCompanyContextlegacy
Servicios públicos
identity expone el servicio:
identity:general
Con acceso a companyAccess para casos como:
canAccessCompany(...)
findAccessibleCompanyIds(...)
Responsabilidad:
identitydecide quécompanyIdpuede usar una cuenta según memberships activas.- no devuelve la ficha completa de empresa.
Tenant context
requireIdentityTenant(params) compone:
identity:general.companyAccesscompanies:general.finder
Validación esperada:
- access token válido
- cuenta autenticable
X-Company-IdpresenteX-Company-IdUUID válido- membership activa
- company activa
req.user.companyIdpoblado
Reglas de mantenimiento
- Backend nuevo: usar
@erp/identity/api. - No documentar ni crear
GET /identity/companies. - No borrar
modules/authmientras existan consumidores legacy reales. modules/suppliersigue pendiente de migración si continúa usando el runtime legacy.