feat(auth): login JWT en API y las 4 apps
- Modelo Usuario + seed desde lista de vendedores (18 usuarios, bcrypt cost 12) - POST /api/auth/login + /api/auth/me; middleware Bearer en todo /api excepto health, login y webhook Monday; flag AUTH_ENABLED - Username = nombre completo normalizado (case/acentos insensible), password inicial Frasa2026, admin vía ADMIN_PASSWORD - Apps: LoginScreen + AuthGate (StudioBlank), token en localStorage, header Authorization en todas las llamadas, logout en 401 - Tests: api 136, cotizador 71, alta 65, cobranza 71, agente-ia 13, landing 4
This commit is contained in:
@@ -53,6 +53,15 @@ export const config = {
|
||||
// Umbral mínimo de similitud coseno para recuperar contexto (0-1)
|
||||
minScore: Number(env('AI_MIN_SCORE', '0.3')),
|
||||
},
|
||||
auth: {
|
||||
jwtSecret: env('JWT_SECRET'),
|
||||
// Cadena aceptada por jsonwebtoken (p. ej. '7d')
|
||||
jwtExpiresIn: env('JWT_EXPIRES_IN', '7d'),
|
||||
// 'false' desactiva la exigencia de token en /api (tests, arranque temprano)
|
||||
enabled: env('AUTH_ENABLED', 'true') !== 'false',
|
||||
// Password del usuario admin sembrado (seed-usuarios.ts)
|
||||
adminPassword: env('ADMIN_PASSWORD', 'Frasa2026'),
|
||||
},
|
||||
} as const
|
||||
|
||||
export type AppConfig = typeof config
|
||||
|
||||
Reference in New Issue
Block a user