ae629d1dc2
- Camada de banco unificada (src/database.js): drivers Postgres/Firebird, tradutor de SQL, suporte a schema e pool de conexões - Conexões: novo_local (Postgres externo) e firebird_local (legado) - Tela de rotas da API redesenhada (auth, params, exemplos de body) - Correções de segurança (críticos/altos/médios/baixos): XSS no chat, escalonamento de privilégio, mídia autenticada, SQL restrito a gerente, JWT sem fallback + issuer, IDOR em conversas, CORS por allowlist, rate-limit no login, limites de corpo por rota - Deploy alinhado: install.sh grava .env com PG_*, migracoes.js driver-aware Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
68 lines
2.1 KiB
JavaScript
68 lines
2.1 KiB
JavaScript
/**
|
|
* Script para gerar/renovar o USU_TOKEN de um usuário.
|
|
* Uso: node scripts/gerar-token-usuario.js <LOGIN> [alias]
|
|
*
|
|
* Cada usuário recebe um token único (48 caracteres hex) armazenado
|
|
* no campo USU_TOKEN, que pode ser usado para autenticação na API
|
|
* via header X-Usu-Token.
|
|
*
|
|
* @param {string} LOGIN - Login do usuário
|
|
* @param {string} [alias=lajedo] - Alias do banco de dados
|
|
*/
|
|
const crypto = require('crypto');
|
|
const db = require('../src/database');
|
|
|
|
async function main() {
|
|
const login = process.argv[2];
|
|
const alias = process.argv[3] || 'lajedo';
|
|
|
|
if (!login) {
|
|
console.log('Uso: node scripts/gerar-token-usuario.js <LOGIN> [alias]');
|
|
console.log('Ex: node scripts/gerar-token-usuario.js SUPORTE lajedo');
|
|
process.exit(1);
|
|
}
|
|
|
|
// Verifica se o usuário existe
|
|
const users = await db.query(alias,
|
|
`SELECT USU_CODIGO_ID, USU_NOME, USU_LOGIN, USU_STATUS, USU_ACESSO_WEB
|
|
FROM USUARIOS WHERE USU_LOGIN = ?`,
|
|
[login]
|
|
);
|
|
|
|
if (users.length === 0) {
|
|
console.log(`❌ Usuário "${login}" não encontrado no alias "${alias}".`);
|
|
process.exit(1);
|
|
}
|
|
|
|
const user = users[0];
|
|
|
|
// Gera um token único (48 caracteres hex)
|
|
const token = crypto.randomBytes(24).toString('hex');
|
|
|
|
// Armazena no banco
|
|
await db.execute(alias,
|
|
'UPDATE USUARIOS SET USU_TOKEN = ? WHERE USU_CODIGO_ID = ?',
|
|
[token, user.USU_CODIGO_ID]
|
|
);
|
|
|
|
console.log('=== Token gerado com sucesso! ===');
|
|
console.log(`Alias: ${alias}`);
|
|
console.log(`Usuário: ${user.USU_NOME.trim()} (${user.USU_LOGIN.trim()})`);
|
|
console.log(`ID: ${user.USU_CODIGO_ID}`);
|
|
console.log(`Status: ${user.USU_STATUS === 'A' ? '✅ Ativo' : '❌ Inativo'}`);
|
|
console.log(`Acesso Web: ${user.USU_ACESSO_WEB === 1 ? '✅ Sim' : '❌ Não'}`);
|
|
console.log(`\n🔑 USU_TOKEN:`);
|
|
console.log(`${token}`);
|
|
console.log(`\n📌 Use no header das requisições:`);
|
|
console.log(`X-Usu-Token: ${token}`);
|
|
console.log(`ou`);
|
|
console.log(`Authorization: Bearer ${token}`);
|
|
|
|
process.exit(0);
|
|
}
|
|
|
|
main().catch(err => {
|
|
console.error('Erro:', err.message);
|
|
process.exit(1);
|
|
});
|