- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8 - Cambios en backend y frontend Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
138 lines
3.1 KiB
Markdown
138 lines
3.1 KiB
Markdown
# MCH-002: Autenticacion
|
|
|
|
## Metadata
|
|
- **Codigo:** MCH-002
|
|
- **Fase:** 1 - MVP Core
|
|
- **Prioridad:** P0
|
|
- **Estado:** Completado
|
|
- **Fecha inicio:** 2026-01-05
|
|
- **Fecha fin:** 2026-01-06
|
|
|
|
## Descripcion
|
|
|
|
Sistema de autenticacion adaptado a micro-negocios mexicanos: login via telefono con OTP (SMS/WhatsApp), PIN de 4 digitos para acceso rapido, soporte biometrico opcional, y JWT para sesiones.
|
|
|
|
## Objetivos
|
|
|
|
1. Login via telefono + OTP
|
|
2. PIN de 4 digitos para acceso rapido
|
|
3. Soporte biometrico (Face ID/huella)
|
|
4. Gestion de sesiones JWT
|
|
5. Roles: owner, employee, viewer
|
|
|
|
## Alcance
|
|
|
|
### Incluido
|
|
- Registro con telefono
|
|
- OTP via SMS/WhatsApp
|
|
- PIN de 4 digitos
|
|
- JWT con refresh tokens
|
|
- Roles basicos (owner/employee/viewer)
|
|
- Logout y revocacion de sesiones
|
|
|
|
### Excluido
|
|
- OAuth (Google, Facebook) - fase posterior
|
|
- 2FA via TOTP - fase posterior
|
|
- SSO empresarial
|
|
|
|
## Flujos de Usuario
|
|
|
|
### Registro Inicial
|
|
```
|
|
1. Usuario ingresa telefono
|
|
2. Se envia OTP via SMS/WhatsApp
|
|
3. Usuario verifica OTP
|
|
4. Usuario configura PIN de 4 digitos
|
|
5. Se crea tenant automaticamente (para owners)
|
|
6. Usuario accede al dashboard
|
|
```
|
|
|
|
### Login Subsecuente
|
|
```
|
|
1. Usuario ingresa telefono
|
|
2. Usuario ingresa PIN de 4 digitos
|
|
- O usa biometrico si esta configurado
|
|
3. JWT generado
|
|
4. Acceso al sistema
|
|
```
|
|
|
|
### Login por OTP (sin PIN)
|
|
```
|
|
1. Usuario selecciona "Olvide mi PIN"
|
|
2. Se envia OTP
|
|
3. Usuario verifica OTP
|
|
4. Puede reconfigurrar PIN
|
|
```
|
|
|
|
## Modelo de Datos
|
|
|
|
### Tablas (schema: auth)
|
|
- `users`: id, tenant_id, phone, email, password_hash, name, role, pin_hash, status
|
|
- `sessions`: id, user_id, token, device_info, expires_at, revoked_at
|
|
- `roles`: id, tenant_id, name, permissions (JSONB)
|
|
|
|
## Endpoints API
|
|
|
|
| Metodo | Endpoint | Descripcion |
|
|
|--------|----------|-------------|
|
|
| POST | /auth/register | Registro nuevo usuario |
|
|
| POST | /auth/send-otp | Enviar OTP a telefono |
|
|
| POST | /auth/verify-otp | Verificar OTP |
|
|
| POST | /auth/set-pin | Configurar PIN |
|
|
| POST | /auth/login | Login con telefono + PIN |
|
|
| POST | /auth/login-otp | Login solo con OTP |
|
|
| GET | /auth/me | Usuario actual |
|
|
| POST | /auth/refresh | Renovar JWT |
|
|
| POST | /auth/logout | Cerrar sesion |
|
|
| DELETE | /auth/sessions | Revocar todas las sesiones |
|
|
|
|
## Entregables
|
|
|
|
| Entregable | Estado | Archivo |
|
|
|------------|--------|---------|
|
|
| DDL auth schema | Completado | `04-auth.sql` |
|
|
| auth.module.ts | Completado | `modules/auth/` |
|
|
| JwtStrategy | Completado | `strategies/jwt.strategy.ts` |
|
|
| Guards | Completado | `guards/` |
|
|
|
|
## Dependencias
|
|
|
|
### Depende de
|
|
- MCH-001 (Infraestructura)
|
|
|
|
### Bloquea a
|
|
- MCH-003 (Productos)
|
|
- MCH-004 (POS)
|
|
- Todos los modulos que requieren auth
|
|
|
|
## Criterios de Aceptacion
|
|
|
|
- [x] Registro con telefono funcional
|
|
- [x] OTP se envia correctamente
|
|
- [x] PIN de 4 digitos funciona
|
|
- [x] JWT se genera y valida
|
|
- [x] Roles owner/employee/viewer funcionan
|
|
- [x] Sesiones se pueden revocar
|
|
|
|
## Configuracion
|
|
|
|
```typescript
|
|
// JWT Config
|
|
{
|
|
secret: process.env.JWT_SECRET,
|
|
expiresIn: '7d',
|
|
refreshExpiresIn: '30d'
|
|
}
|
|
|
|
// OTP Config
|
|
{
|
|
length: 6,
|
|
expiresIn: '5m',
|
|
maxAttempts: 3
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
**Ultima actualizacion:** 2026-01-07
|