@nio-cli/cli 0.3.7 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/.env.example +68 -5
  2. package/Dockerfile.gateway +13 -5
  3. package/dist/adapters/lang/vendor.js +5 -10
  4. package/dist/adapters/lang/vendor.js.map +1 -1
  5. package/dist/adapters/pg/auth-event-repository.js +30 -0
  6. package/dist/adapters/pg/auth-event-repository.js.map +1 -0
  7. package/dist/adapters/pg/client.js +22 -4
  8. package/dist/adapters/pg/client.js.map +1 -1
  9. package/dist/adapters/pg/login-ip-repository.js +26 -0
  10. package/dist/adapters/pg/login-ip-repository.js.map +1 -0
  11. package/dist/adapters/pg/user-repository.js +47 -18
  12. package/dist/adapters/pg/user-repository.js.map +1 -1
  13. package/dist/adapters/sms/http-generic.js +21 -0
  14. package/dist/adapters/sms/http-generic.js.map +1 -1
  15. package/dist/brand.js +1 -1
  16. package/dist/brand.js.map +1 -1
  17. package/dist/cli/commands/auth.js +25 -18
  18. package/dist/cli/commands/auth.js.map +1 -1
  19. package/dist/cli/commands/docker.js +4 -4
  20. package/dist/cli/commands/docker.js.map +1 -1
  21. package/dist/cli/commands/security.js +76 -5
  22. package/dist/cli/commands/security.js.map +1 -1
  23. package/dist/cli/commands/sync.js +5 -1
  24. package/dist/cli/commands/sync.js.map +1 -1
  25. package/dist/gateway/config.js +23 -1
  26. package/dist/gateway/config.js.map +1 -1
  27. package/dist/gateway/edge-filter.js +20 -3
  28. package/dist/gateway/edge-filter.js.map +1 -1
  29. package/dist/gateway/index.js +145 -22
  30. package/dist/gateway/index.js.map +1 -1
  31. package/dist/gateway/middleware/auth.js +15 -3
  32. package/dist/gateway/middleware/auth.js.map +1 -1
  33. package/dist/gateway/services/login.js +47 -11
  34. package/dist/gateway/services/login.js.map +1 -1
  35. package/dist/gateway/services/register.js +20 -0
  36. package/dist/gateway/services/register.js.map +1 -0
  37. package/dist/gateway/services/security.js +64 -11
  38. package/dist/gateway/services/security.js.map +1 -1
  39. package/dist/gateway/throttle.js +57 -0
  40. package/dist/gateway/throttle.js.map +1 -0
  41. package/dist/lib/auth/backup-codes.js +4 -4
  42. package/dist/lib/auth/backup-codes.js.map +1 -1
  43. package/dist/lib/auth/breach-check.js +58 -0
  44. package/dist/lib/auth/breach-check.js.map +1 -0
  45. package/dist/lib/auth/gateway-client.js +17 -2
  46. package/dist/lib/auth/gateway-client.js.map +1 -1
  47. package/dist/lib/auth/gateway-process.js +17 -2
  48. package/dist/lib/auth/gateway-process.js.map +1 -1
  49. package/dist/lib/auth/gateway-token.js +2 -2
  50. package/dist/lib/auth/gateway-token.js.map +1 -1
  51. package/dist/lib/auth/nio-config.js +29 -7
  52. package/dist/lib/auth/nio-config.js.map +1 -1
  53. package/dist/lib/auth/otp.js +3 -3
  54. package/dist/lib/auth/otp.js.map +1 -1
  55. package/dist/lib/auth/password.js +33 -10
  56. package/dist/lib/auth/password.js.map +1 -1
  57. package/dist/lib/auth/secrets.js +96 -0
  58. package/dist/lib/auth/secrets.js.map +1 -0
  59. package/dist/lib/auth/session-store.js +2 -2
  60. package/dist/lib/auth/session-store.js.map +1 -1
  61. package/dist/lib/clients/client-install.js +22 -4
  62. package/dist/lib/clients/client-install.js.map +1 -1
  63. package/dist/lib/fetch-zipball.js +59 -0
  64. package/dist/lib/fetch-zipball.js.map +1 -0
  65. package/dist/lib/load-env.js +17 -5
  66. package/dist/lib/load-env.js.map +1 -1
  67. package/dist/lib/open-url.js +5 -2
  68. package/dist/lib/open-url.js.map +1 -1
  69. package/dist/lib/proc.js +27 -0
  70. package/dist/lib/proc.js.map +1 -1
  71. package/dist/lib/skills/skills-cache.js +25 -12
  72. package/dist/lib/skills/skills-cache.js.map +1 -1
  73. package/dist/lib/version-check.js +1 -11
  74. package/dist/lib/version-check.js.map +1 -1
  75. package/dist/mcp-server.js +5 -2
  76. package/dist/mcp-server.js.map +1 -1
  77. package/dist/tui/launch.js +6 -1
  78. package/dist/tui/launch.js.map +1 -1
  79. package/dist/version.js +17 -6
  80. package/dist/version.js.map +1 -1
  81. package/docker/docker-compose.yml +56 -26
  82. package/docker/kong.yml +10 -0
  83. package/package.json +20 -11
@@ -1,18 +1,30 @@
1
1
  #!/usr/bin/env node
2
2
  import '../lib/load-env.js';
3
3
  import { createServer } from 'node:http';
4
- import { login, logout, verifyLogin } from './services/login.js';
4
+ import { setTimeout as sleep } from 'node:timers/promises';
5
+ import { login, logout, logoutAll, verifyLogin } from './services/login.js';
6
+ import { register } from './services/register.js';
7
+ import { loginDelayMs, recordLoginFail, recordLoginOk, sweep } from './throttle.js';
5
8
  import * as security from './services/security.js';
6
9
  import { authenticate } from './middleware/auth.js';
7
10
  import { createUserRepository } from '../adapters/pg/user-repository.js';
8
- import { buildContext, extractGatewayToken, hasBrowserOrigin, logAuthEvent, logRequest, readJsonBody, tokensMatch, } from './edge-filter.js';
11
+ import { createLoginIpRepository } from '../adapters/pg/login-ip-repository.js';
12
+ import { createAuthEventRepository } from '../adapters/pg/auth-event-repository.js';
13
+ import { BadRequestError, buildContext, clientIp, extractGatewayToken, hasBrowserOrigin, logAuthEvent, logRequest, readJsonBody, tokensMatch, } from './edge-filter.js';
9
14
  import { GATEWAY_PORT, GATEWAY_HOST } from './config.js';
10
15
  import { getOrCreateGatewayToken } from '../lib/auth/gateway-token.js';
16
+ const LOGIN_IP_RETENTION_DAYS = 90;
17
+ const AUTH_EVENTS_RETENTION_DAYS = Math.max(1, Number(process.env.NIO_AUTH_EVENTS_RETENTION_DAYS) || 180);
11
18
  function sendJson(res, status, body) {
12
19
  res.writeHead(status, { 'Content-Type': 'application/json' });
13
20
  res.end(JSON.stringify(body));
14
21
  }
15
- const TOKEN_REQUIRED = (path) => path === '/login' || path === '/logout' || path === '/verify-2fa' || path.startsWith('/security/');
22
+ const TOKEN_REQUIRED = (path) => path === '/register' ||
23
+ path === '/login' ||
24
+ path === '/logout' ||
25
+ path === '/logout-all' ||
26
+ path === '/verify-2fa' ||
27
+ path.startsWith('/security/');
16
28
  async function requireAuth(req, res) {
17
29
  const auth = await authenticate(req.headers.authorization);
18
30
  if (!auth.ok) {
@@ -30,31 +42,87 @@ function sessionJson(s) {
30
42
  expiresAt: s.expiresAt.toISOString(),
31
43
  };
32
44
  }
45
+ async function recordLoginIp(req, userId) {
46
+ const ip = clientIp(req);
47
+ if (!ip)
48
+ return;
49
+ try {
50
+ await createLoginIpRepository().record(userId, ip);
51
+ }
52
+ catch (err) {
53
+ console.error(JSON.stringify({ ts: new Date().toISOString(), event: 'login_ip_record_failed', error: err.message }));
54
+ }
55
+ }
56
+ function auditAuth(req, ctx, event, meta = {}) {
57
+ logAuthEvent(ctx, event, meta);
58
+ void createAuthEventRepository()
59
+ .record({
60
+ event,
61
+ name: meta.name ?? null,
62
+ userId: meta.userId ?? null,
63
+ ip: clientIp(req),
64
+ traceId: ctx.traceId,
65
+ detail: meta.reason ? { reason: meta.reason } : null,
66
+ })
67
+ .catch((err) => console.error(JSON.stringify({ ts: new Date().toISOString(), event: 'auth_event_record_failed', error: err.message })));
68
+ }
69
+ async function handleRegister(req, res, ctx) {
70
+ const body = await readJsonBody(req);
71
+ if (!body.name || !body.password) {
72
+ sendJson(res, 400, { error: 'name e password são obrigatórios' });
73
+ return;
74
+ }
75
+ const out = await register(body.name, body.password);
76
+ if (!out.ok) {
77
+ const msg = {
78
+ invalid_name: 'nome inválido (1–64 chars)',
79
+ weak_password: 'senha muito curta',
80
+ breached_password: 'senha comprometida (aparece em vazamentos conhecidos) — escolha outra',
81
+ name_taken: 'nome já em uso',
82
+ }[out.reason];
83
+ sendJson(res, out.reason === 'name_taken' ? 409 : 400, { error: msg, reason: out.reason });
84
+ return;
85
+ }
86
+ auditAuth(req, ctx, 'register', { name: out.name, userId: out.userId });
87
+ sendJson(res, 201, { userId: out.userId, name: out.name });
88
+ }
33
89
  async function handleLogin(req, res, ctx) {
34
90
  const body = await readJsonBody(req);
35
91
  if (!body.name || !body.password) {
36
92
  sendJson(res, 400, { error: 'name e password são obrigatórios' });
37
93
  return;
38
94
  }
95
+ const delay = loginDelayMs(body.name);
96
+ if (delay > 0)
97
+ await sleep(delay);
39
98
  const out = await login(body.name, body.password);
40
99
  if (!out.ok) {
41
100
  if (out.reason === 'bad_credentials') {
42
- logAuthEvent(ctx, 'password_fail', { name: body.name });
101
+ recordLoginFail(body.name);
102
+ auditAuth(req, ctx, 'password_fail', { name: body.name });
43
103
  sendJson(res, 401, { error: 'usuário ou senha inválidos' });
44
104
  }
45
105
  else {
46
- logAuthEvent(ctx, 'password_ok', { name: body.name });
106
+ auditAuth(req, ctx, 'password_ok', { name: body.name, reason: 'sms_error' });
47
107
  sendJson(res, 503, { error: out.error });
48
108
  }
49
109
  return;
50
110
  }
111
+ recordLoginOk(body.name);
51
112
  if (out.step === 'done') {
52
- logAuthEvent(ctx, 'password_ok', { name: body.name, userId: out.session.userId });
113
+ auditAuth(req, ctx, 'password_ok', { name: body.name, userId: out.session.userId });
114
+ void recordLoginIp(req, out.session.userId);
53
115
  sendJson(res, 200, { step: 'done', ...sessionJson(out.session) });
54
116
  return;
55
117
  }
56
- logAuthEvent(ctx, '2fa_sent', { name: body.name });
57
- sendJson(res, 200, { step: '2fa_required', challengeId: out.challengeId, phoneHint: out.phoneHint });
118
+ auditAuth(req, ctx, '2fa_sent', { name: body.name });
119
+ sendJson(res, 200, {
120
+ step: '2fa_required',
121
+ challengeId: out.challengeId,
122
+ phoneHint: out.phoneHint,
123
+ smsMode: out.smsMode,
124
+ devCode: out.devCode,
125
+ });
58
126
  }
59
127
  async function handleVerify2fa(req, res, ctx) {
60
128
  const body = await readJsonBody(req);
@@ -64,7 +132,10 @@ async function handleVerify2fa(req, res, ctx) {
64
132
  }
65
133
  const out = await verifyLogin(body.challengeId, body.code, body.type === 'backup' ? 'backup' : 'otp');
66
134
  if (!out.ok) {
67
- logAuthEvent(ctx, out.reason === 'expired' ? '2fa_expired' : '2fa_fail', { reason: out.reason });
135
+ auditAuth(req, ctx, out.reason === 'expired' ? '2fa_expired' : '2fa_fail', {
136
+ reason: out.reason,
137
+ userId: out.userId,
138
+ });
68
139
  const status = out.reason === 'attempts_exhausted' ? 429 : 401;
69
140
  sendJson(res, status, {
70
141
  error: 'código incorreto ou expirado',
@@ -74,16 +145,28 @@ async function handleVerify2fa(req, res, ctx) {
74
145
  });
75
146
  return;
76
147
  }
77
- logAuthEvent(ctx, '2fa_ok', { userId: out.session.userId });
148
+ auditAuth(req, ctx, '2fa_ok', { userId: out.session.userId });
149
+ void recordLoginIp(req, out.session.userId);
78
150
  sendJson(res, 200, { step: 'done', ...sessionJson(out.session), backupCodesRemaining: out.backupCodesRemaining });
79
151
  }
80
- async function handleLogout(req, res) {
81
- const body = await readJsonBody(req);
82
- if (!body.sessionId) {
83
- sendJson(res, 400, { error: 'sessionId é obrigatório' });
152
+ async function handleLogout(req, res, ctx) {
153
+ const auth = await authenticate(req.headers.authorization);
154
+ if (!auth.ok) {
155
+ sendJson(res, 200, { ok: true });
156
+ return;
157
+ }
158
+ await logout(auth.sessionId);
159
+ auditAuth(req, ctx, 'logout', { userId: auth.userId });
160
+ sendJson(res, 200, { ok: true });
161
+ }
162
+ async function handleLogoutAll(req, res, ctx) {
163
+ const auth = await authenticate(req.headers.authorization);
164
+ if (!auth.ok) {
165
+ sendJson(res, 200, { ok: true });
84
166
  return;
85
167
  }
86
- await logout(body.sessionId);
168
+ await logoutAll(auth.userId);
169
+ auditAuth(req, ctx, 'logout_all', { userId: auth.userId });
87
170
  sendJson(res, 200, { ok: true });
88
171
  }
89
172
  async function handleSecurity(req, res, ctx, path) {
@@ -96,18 +179,33 @@ async function handleSecurity(req, res, ctx, path) {
96
179
  }
97
180
  const body = await readJsonBody(req);
98
181
  const type = body.type === 'backup' ? 'backup' : 'otp';
182
+ if (path === '/security/change-password') {
183
+ if (!body.currentPassword || !body.newPassword) {
184
+ return sendJson(res, 400, { error: 'currentPassword e newPassword são obrigatórios' });
185
+ }
186
+ const r = await security.changePassword(userId, body.currentPassword, body.newPassword);
187
+ auditAuth(req, ctx, r.ok ? 'password_changed' : 'password_fail', {
188
+ userId,
189
+ reason: r.ok ? undefined : r.error,
190
+ });
191
+ return sendJson(res, r.ok ? 200 : 401, r.ok ? { ok: true } : { error: r.error });
192
+ }
99
193
  if (path === '/security/enable-2fa') {
100
194
  if (!body.phone)
101
195
  return sendJson(res, 400, { error: 'phone é obrigatório' });
102
196
  const r = await security.startSecurityChallenge(userId, body.phone);
103
- return sendJson(res, r.ok ? 200 : 400, r.ok ? { challengeId: r.challengeId } : { error: r.error });
197
+ if (!r.ok)
198
+ return sendJson(res, 400, { error: r.error });
199
+ return sendJson(res, 200, { challengeId: r.challengeId, smsMode: r.smsMode, devCode: r.devCode });
104
200
  }
105
201
  if (path === '/security/challenge') {
106
202
  const user = await createUserRepository().findById(userId);
107
203
  if (!user?.phone)
108
204
  return sendJson(res, 400, { error: '2FA não está ativo' });
109
205
  const r = await security.startSecurityChallenge(userId, user.phone);
110
- return sendJson(res, r.ok ? 200 : 400, r.ok ? { challengeId: r.challengeId } : { error: r.error });
206
+ if (!r.ok)
207
+ return sendJson(res, 400, { error: r.error });
208
+ return sendJson(res, 200, { challengeId: r.challengeId, smsMode: r.smsMode, devCode: r.devCode });
111
209
  }
112
210
  if (!body.challengeId || !body.code) {
113
211
  return sendJson(res, 400, { error: 'challengeId e code são obrigatórios' });
@@ -116,12 +214,12 @@ async function handleSecurity(req, res, ctx, path) {
116
214
  if (!body.phone)
117
215
  return sendJson(res, 400, { error: 'phone é obrigatório' });
118
216
  const r = await security.confirmEnable2fa(userId, body.challengeId, body.code, body.phone);
119
- logAuthEvent(ctx, r.ok ? '2fa_enabled' : '2fa_fail', { userId });
217
+ auditAuth(req, ctx, r.ok ? '2fa_enabled' : '2fa_fail', { userId, reason: r.ok ? undefined : r.error });
120
218
  return sendJson(res, r.ok ? 200 : 401, r.ok ? { backupCodes: r.backupCodes } : { error: r.error });
121
219
  }
122
220
  if (path === '/security/disable-2fa') {
123
221
  const r = await security.disable2fa(userId, body.challengeId, body.code, type);
124
- logAuthEvent(ctx, r.ok ? '2fa_disabled' : '2fa_fail', { userId });
222
+ auditAuth(req, ctx, r.ok ? '2fa_disabled' : '2fa_fail', { userId, reason: r.ok ? undefined : r.error });
125
223
  return sendJson(res, r.ok ? 200 : 401, r.ok ? { ok: true } : { error: r.error });
126
224
  }
127
225
  if (path === '/security/regenerate-backup-codes') {
@@ -131,6 +229,9 @@ async function handleSecurity(req, res, ctx, path) {
131
229
  sendJson(res, 404, { error: 'rota desconhecida' });
132
230
  }
133
231
  async function main() {
232
+ if (process.env.NIO_GATEWAY_DATABASE_URL?.trim()) {
233
+ process.env.NIO_DATABASE_URL = process.env.NIO_GATEWAY_DATABASE_URL.trim();
234
+ }
134
235
  const gatewayToken = await getOrCreateGatewayToken();
135
236
  const server = createServer((req, res) => {
136
237
  const ctx = buildContext(req);
@@ -147,12 +248,16 @@ async function main() {
147
248
  logRequest(ctx);
148
249
  void (async () => {
149
250
  try {
251
+ if (ctx.method === 'POST' && ctx.path === '/register')
252
+ return await handleRegister(req, res, ctx);
150
253
  if (ctx.method === 'POST' && ctx.path === '/login')
151
254
  return await handleLogin(req, res, ctx);
152
255
  if (ctx.method === 'POST' && ctx.path === '/verify-2fa')
153
256
  return await handleVerify2fa(req, res, ctx);
154
257
  if (ctx.method === 'POST' && ctx.path === '/logout')
155
- return await handleLogout(req, res);
258
+ return await handleLogout(req, res, ctx);
259
+ if (ctx.method === 'POST' && ctx.path === '/logout-all')
260
+ return await handleLogoutAll(req, res, ctx);
156
261
  if (ctx.path.startsWith('/security/'))
157
262
  return await handleSecurity(req, res, ctx, ctx.path);
158
263
  if (ctx.method === 'GET' && ctx.path === '/health')
@@ -160,11 +265,29 @@ async function main() {
160
265
  sendJson(res, 404, { error: 'rota desconhecida' });
161
266
  }
162
267
  catch (err) {
163
- logRequest(ctx, { error: err.message });
164
- sendJson(res, 400, { error: err.message });
268
+ logRequest(ctx, { error: err.message, stack: err.stack });
269
+ if (err instanceof BadRequestError) {
270
+ sendJson(res, 400, { error: err.message });
271
+ }
272
+ else {
273
+ sendJson(res, 500, { error: 'erro interno ao processar a request', traceId: ctx.traceId });
274
+ }
165
275
  }
166
276
  })();
167
277
  });
278
+ setInterval(() => sweep(), 5 * 60_000).unref();
279
+ const pruneAudit = async () => {
280
+ try {
281
+ const a = await createLoginIpRepository().pruneOlderThan(LOGIN_IP_RETENTION_DAYS);
282
+ const b = await createAuthEventRepository().pruneOlderThan(AUTH_EVENTS_RETENTION_DAYS);
283
+ if (a + b > 0)
284
+ console.error(`[nio-gateway] retenção: -${a} login_ip_events, -${b} auth_events`);
285
+ }
286
+ catch {
287
+ }
288
+ };
289
+ void pruneAudit();
290
+ setInterval(() => void pruneAudit(), 24 * 60 * 60_000).unref();
168
291
  server.listen(GATEWAY_PORT, GATEWAY_HOST, () => {
169
292
  console.error(`[nio-gateway] ouvindo em http://${GATEWAY_HOST}:${GATEWAY_PORT}`);
170
293
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gateway/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gateway/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import jwt from 'jsonwebtoken';
2
2
  import { createAuthSessionRepository } from '../../adapters/pg/auth-session-repository.js';
3
- import { getJwtSecret } from '../config.js';
3
+ import { JWT_ISSUER, JWT_AUDIENCE } from '../config.js';
4
+ import { jwtVerifyKey } from '../../lib/auth/secrets.js';
4
5
  export function extractBearerToken(authHeader) {
5
6
  if (!authHeader)
6
7
  return null;
@@ -13,7 +14,15 @@ export async function authenticate(authHeader) {
13
14
  return { ok: false, reason: 'token_ausente' };
14
15
  let decoded;
15
16
  try {
16
- decoded = jwt.verify(token, getJwtSecret(), { algorithms: ['HS256'] });
17
+ const header = jwt.decode(token, { complete: true })?.header;
18
+ const secret = jwtVerifyKey(header?.kid);
19
+ if (!secret)
20
+ return { ok: false, reason: 'token_invalido' };
21
+ decoded = jwt.verify(token, secret, {
22
+ algorithms: ['HS256'],
23
+ issuer: JWT_ISSUER,
24
+ audience: JWT_AUDIENCE,
25
+ });
17
26
  }
18
27
  catch {
19
28
  return { ok: false, reason: 'token_invalido' };
@@ -21,7 +30,7 @@ export async function authenticate(authHeader) {
21
30
  if (!decoded || typeof decoded !== 'object' || typeof decoded.jti !== 'string') {
22
31
  return { ok: false, reason: 'token_invalido' };
23
32
  }
24
- const jti = decoded.jti;
33
+ const { jti, sub } = decoded;
25
34
  const session = await createAuthSessionRepository().findById(jti);
26
35
  if (!session)
27
36
  return { ok: false, reason: 'token_invalido' };
@@ -29,6 +38,9 @@ export async function authenticate(authHeader) {
29
38
  return { ok: false, reason: 'sessao_revogada' };
30
39
  if (session.expiresAt.getTime() <= Date.now())
31
40
  return { ok: false, reason: 'sessao_expirada' };
41
+ if (typeof sub === 'string' && sub !== String(session.userId)) {
42
+ return { ok: false, reason: 'token_invalido' };
43
+ }
32
44
  return { ok: true, userId: session.userId, sessionId: session.id };
33
45
  }
34
46
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/gateway/middleware/auth.ts"],"names":[],"mappings":"AAUA,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAOxC,MAAM,UAAU,kBAAkB,CAAC,UAAsC;IACrE,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,CAAC,GAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAqC;IAClE,MAAM,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAE1D,IAAI,OAAgB,CAAC;IACrB,IAAG,CAAC;QACF,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,EAAC,CAAC,CAAA;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAG,OAAQ,OAAmC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC3G,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAC,CAAC;IAChD,CAAC;IACD,MAAM,GAAG,GAAI,OAAyB,CAAC,GAAG,CAAC;IAE3C,MAAM,OAAO,GAAG,MAAM,2BAA2B,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC7D,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAG,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACxE,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAE/F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAG,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;AAEpE,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/gateway/middleware/auth.ts"],"names":[],"mappings":"AAUA,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAOrD,MAAM,UAAU,kBAAkB,CAAC,UAAsC;IACrE,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,CAAC,GAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAqC;IAClE,MAAM,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAE1D,IAAI,OAAgB,CAAC;IACrB,IAAG,CAAC;QAEF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC;QAC7D,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QAC5D,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;YAClC,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,YAAY;SACvB,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAG,OAAQ,OAAmC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC3G,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAC,CAAC;IAChD,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAyC,CAAC;IAE/D,MAAM,OAAO,GAAG,MAAM,2BAA2B,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC7D,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAG,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACxE,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAI/F,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACjD,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAG,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;AAEpE,CAAC"}
@@ -4,10 +4,15 @@ import { createAuthSessionRepository } from '../../adapters/pg/auth-session-repo
4
4
  import { createLoginChallengeRepository } from '../../adapters/pg/login-challenge-repository.js';
5
5
  import { createHttpSmsSender } from '../../adapters/sms/http-generic.js';
6
6
  import { generateOtp, hashOtp, verifyOtp } from '../../lib/auth/otp.js';
7
+ import { smsMode } from '../../adapters/sms/http-generic.js';
7
8
  import { verifyBackupCode, markUsed, countRemaining } from '../../lib/auth/backup-codes.js';
8
- import { getJwtSecret, JWT_EXPIRES_IN } from '../config.js';
9
+ import { JWT_EXPIRES_IN, JWT_ISSUER, JWT_AUDIENCE } from '../config.js';
10
+ import { jwtSigningKey } from '../../lib/auth/secrets.js';
11
+ import { smsAllowed } from '../throttle.js';
9
12
  export const OTP_TTL_MS = 5 * 60 * 1000;
10
13
  export const OTP_MAX_ATTEMPTS = 3;
14
+ export const CHALLENGE_MAX_ATTEMPTS = OTP_MAX_ATTEMPTS * 2;
15
+ export const MAX_SESSIONS_PER_USER = Math.max(1, Number(process.env.NIO_MAX_SESSIONS_PER_USER) || 5);
11
16
  export function expiresInMs(spec) {
12
17
  const m = /^(\d+)(s|m|h|d)$/.exec(spec.trim());
13
18
  if (!m) {
@@ -31,12 +36,29 @@ export function challengeUsable(ch) {
31
36
  return { ok: false, reason: 'expired' };
32
37
  return { ok: true, ch };
33
38
  }
39
+ async function pruneExcessSessions(sessions, userId) {
40
+ try {
41
+ const active = await sessions.listActiveByUser(userId);
42
+ await Promise.all(active.slice(MAX_SESSIONS_PER_USER).map((s) => sessions.revoke(s.id)));
43
+ }
44
+ catch {
45
+ }
46
+ }
34
47
  export async function issueSession(user) {
35
48
  await createUserRepository().touchLastSession(user.id);
36
49
  const ms = expiresInMs(JWT_EXPIRES_IN);
37
50
  const expiresAt = new Date(Date.now() + ms);
38
- const session = await createAuthSessionRepository().create({ userId: user.id, expiresAt });
39
- const token = jwt.sign({ sub: String(user.id), jti: session.id }, getJwtSecret(), { algorithm: 'HS256', expiresIn: Math.floor(ms / 1000) });
51
+ const sessions = createAuthSessionRepository();
52
+ const session = await sessions.create({ userId: user.id, expiresAt });
53
+ await pruneExcessSessions(sessions, user.id);
54
+ const { kid, secret } = jwtSigningKey();
55
+ const token = jwt.sign({ sub: String(user.id), jti: session.id }, secret, {
56
+ algorithm: 'HS256',
57
+ expiresIn: Math.floor(ms / 1000),
58
+ issuer: JWT_ISSUER,
59
+ audience: JWT_AUDIENCE,
60
+ ...(kid ? { keyid: kid } : {}),
61
+ });
40
62
  return { token, userId: user.id, name: user.name, sessionId: session.id, expiresAt };
41
63
  }
42
64
  export async function login(name, password, deps = {}) {
@@ -47,6 +69,9 @@ export async function login(name, password, deps = {}) {
47
69
  if (!user.auth2 || !user.phone) {
48
70
  return { ok: true, step: 'done', session: await issueSession(user) };
49
71
  }
72
+ if (!smsAllowed(user.id, user.phone)) {
73
+ return { ok: false, reason: 'server_error', error: 'muitos códigos solicitados — aguarde alguns minutos.' };
74
+ }
50
75
  const challenges = deps.challenges ?? createLoginChallengeRepository();
51
76
  const sms = deps.sms ?? createHttpSmsSender();
52
77
  const code = generateOtp();
@@ -66,11 +91,14 @@ export async function login(name, password, deps = {}) {
66
91
  await challenges.consume(challenge.id).catch(() => { });
67
92
  return { ok: false, reason: 'server_error', error: `falha ao enviar o SMS: ${sent.error ?? ''}`.trim() };
68
93
  }
94
+ const mode = smsMode();
69
95
  return {
70
96
  ok: true,
71
97
  step: '2fa_required',
72
98
  challengeId: challenge.id,
73
99
  phoneHint: maskPhone(user.phone),
100
+ smsMode: mode,
101
+ ...(mode === 'echo' ? { devCode: code } : {}),
74
102
  };
75
103
  }
76
104
  export async function verifyLogin(challengeId, code, type, deps = {}) {
@@ -82,18 +110,23 @@ export async function verifyLogin(challengeId, code, type, deps = {}) {
82
110
  const ch = usable.ch;
83
111
  const user = await users.findById(ch.userId);
84
112
  if (!user)
85
- return { ok: false, reason: 'not_found' };
113
+ return { ok: false, reason: 'not_found', userId: ch.userId };
86
114
  if (type === 'backup') {
87
115
  const stored = await users.getBackupCodes(ch.userId);
88
- const idx = await verifyBackupCode(code, stored);
89
- if (idx < 0)
90
- return { ok: false, reason: 'invalid' };
91
- await users.updateBackupCodes(ch.userId, markUsed(stored, idx));
116
+ const idx = await verifyBackupCode(code, stored.codes, stored.pepperId);
117
+ if (idx < 0) {
118
+ const attempts = await challenges.incrementAttempts(ch.id);
119
+ if (attempts >= CHALLENGE_MAX_ATTEMPTS)
120
+ return { ok: false, reason: 'attempts_exhausted', userId: ch.userId };
121
+ return { ok: false, reason: 'invalid', remaining: CHALLENGE_MAX_ATTEMPTS - attempts, userId: ch.userId };
122
+ }
123
+ const used = markUsed(stored.codes, idx);
124
+ await users.updateBackupCodes(ch.userId, used, stored.pepperId);
92
125
  await challenges.consume(ch.id);
93
126
  return {
94
127
  ok: true,
95
128
  session: await issueSession(user),
96
- backupCodesRemaining: countRemaining(markUsed(stored, idx)),
129
+ backupCodesRemaining: countRemaining(used),
97
130
  };
98
131
  }
99
132
  if (verifyOtp(code, ch.codeHash)) {
@@ -102,11 +135,14 @@ export async function verifyLogin(challengeId, code, type, deps = {}) {
102
135
  }
103
136
  const attempts = await challenges.incrementAttempts(ch.id);
104
137
  if (attempts >= OTP_MAX_ATTEMPTS) {
105
- return { ok: false, reason: 'attempts_exhausted', requiresBackupCode: true };
138
+ return { ok: false, reason: 'attempts_exhausted', requiresBackupCode: true, userId: ch.userId };
106
139
  }
107
- return { ok: false, reason: 'invalid', remaining: OTP_MAX_ATTEMPTS - attempts };
140
+ return { ok: false, reason: 'invalid', remaining: OTP_MAX_ATTEMPTS - attempts, userId: ch.userId };
108
141
  }
109
142
  export async function logout(sessionId) {
110
143
  await createAuthSessionRepository().revoke(sessionId);
111
144
  }
145
+ export async function logoutAll(userId) {
146
+ await createAuthSessionRepository().revokeAllByUser(userId);
147
+ }
112
148
  //# sourceMappingURL=login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/gateway/services/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/gateway/services/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { createUserRepository } from '../../adapters/pg/user-repository.js';
2
+ import { hashPassword, MIN_PASSWORD_LENGTH } from '../../lib/auth/password.js';
3
+ import { checkPasswordBreach } from '../../lib/auth/breach-check.js';
4
+ export async function register(name, password, deps = {}) {
5
+ const users = deps.users ?? createUserRepository();
6
+ const clean = name.trim();
7
+ if (!clean || clean.length > 64)
8
+ return { ok: false, reason: 'invalid_name' };
9
+ if (password.length < MIN_PASSWORD_LENGTH)
10
+ return { ok: false, reason: 'weak_password' };
11
+ if ((await checkPasswordBreach(password)).breached)
12
+ return { ok: false, reason: 'breached_password' };
13
+ if (await users.findByName(clean)) {
14
+ await hashPassword(password).catch(() => { });
15
+ return { ok: false, reason: 'name_taken' };
16
+ }
17
+ const user = await users.create({ name: clean, password });
18
+ return { ok: true, userId: user.id, name: user.name };
19
+ }
20
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/gateway/services/register.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAMrE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAY,EACZ,QAAgB,EAChB,OAAmC,EAAE;IAErC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,oBAAoB,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAC9E,IAAI,QAAQ,CAAC,MAAM,GAAG,mBAAmB;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAGzF,IAAI,CAAC,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACtG,IAAI,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAIlC,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAC7C,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD,CAAC"}