/** * Script para gerar/renovar o USU_TOKEN de um usuário. * Uso: node scripts/gerar-token-usuario.js [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 [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); });