# COMANDO PARA EXECUTAR NA VPS # Copie e cole este comando completo na VPS cd /var/www/maktubia-backend cat > criar-hamam-admin.js << 'EOFSCRIPT' require('dotenv').config(); const bcrypt = require('bcrypt'); const postgresql = require('./config/postgresql'); (async () => { try { console.log('šŸ”§ Conectando ao banco de dados...'); const client = await postgresql.getClient(); try { await client.query('BEGIN'); // 1. Verificar ou criar role admin let role = await client.query(`SELECT role_id FROM roles WHERE role_name = 'admin' LIMIT 1`); let adminRoleId; if (role.rows.length === 0) { const newRole = await client.query(` INSERT INTO roles (role_name, role_description, permissions) VALUES ('admin', 'Administrador', $1) RETURNING role_id `, [JSON.stringify({ "*": ["*"] })]); adminRoleId = newRole.rows[0].role_id; console.log('āœ… Role admin criado:', adminRoleId); } else { adminRoleId = role.rows[0].role_id; console.log('ā„¹ļø Role admin jĆ” existe:', adminRoleId); } // 2. Gerar hash da senha const passwordHash = await bcrypt.hash('2535', 10); // 3. Verificar se usuĆ”rio existe let user = await client.query(`SELECT user_id FROM users WHERE username = 'hamam' LIMIT 1`); let userId; if (user.rows.length === 0) { // Criar usuĆ”rio const newUser = await client.query(` INSERT INTO users (username, email, password_hash, role_id, is_active, created_at, updated_at) VALUES ($1, $2, $3, $4, $5, NOW(), NOW()) RETURNING user_id `, ['hamam', 'hamam@maktubia.com', passwordHash, adminRoleId, true]); userId = newUser.rows[0].user_id; console.log('āœ… UsuĆ”rio criado:', userId); // Criar perfil await client.query(` INSERT INTO users_profile (user_id, name, phone, created_at, updated_at) VALUES ($1, $2, $3, NOW(), NOW()) `, [userId, 'Hamam Admin', '+258844232354']); console.log('āœ… Perfil criado'); // Criar carteira await client.query(` INSERT INTO wallets (user_id, balance, points_balance, created_at, updated_at) VALUES ($1, $2, $3, NOW(), NOW()) `, [userId, 0.00, 0]); console.log('āœ… Carteira criada'); } else { userId = user.rows[0].user_id; // Atualizar usuĆ”rio existente await client.query(` UPDATE users SET password_hash = $1, role_id = $2, is_active = $3, updated_at = NOW() WHERE user_id = $4 `, [passwordHash, adminRoleId, true, userId]); console.log('āœ… UsuĆ”rio atualizado:', userId); } await client.query('COMMIT'); // Mostrar resultado const result = await client.query(` SELECT u.user_id, u.username, u.email, r.role_name, u.is_active, wp.name, w.points_balance FROM users u LEFT JOIN roles r ON u.role_id = r.role_id LEFT JOIN users_profile wp ON u.user_id = wp.user_id LEFT JOIN wallets w ON u.user_id = w.user_id WHERE u.user_id = $1 `, [userId]); const userData = result.rows[0]; console.log(''); console.log('========================================'); console.log('āœ… USUƁRIO ADMIN CRIADO COM SUCESSO!'); console.log('========================================'); console.log('Username:', userData.username); console.log('Email:', userData.email); console.log('Role:', userData.role_name); console.log('Senha: 2535'); console.log('User ID:', userData.user_id); console.log('Ativo:', userData.is_active); console.log('Nome:', userData.name); console.log('Pontos:', userData.points_balance || 0); console.log('========================================'); client.release(); process.exit(0); } catch (error) { await client.query('ROLLBACK'); throw error; } } catch (error) { console.error('āŒ Erro ao criar usuĆ”rio:', error); process.exit(1); } })(); EOFSCRIPT node criar-hamam-admin.js rm criar-hamam-admin.js