diff --git a/src/client/components/admin/GeometrySettings.tsx b/src/client/components/admin/GeometrySettings.tsx index 9afa370..7398456 100644 --- a/src/client/components/admin/GeometrySettings.tsx +++ b/src/client/components/admin/GeometrySettings.tsx @@ -41,7 +41,7 @@ export const GeometrySettings: React.FC = () => { const handleOpenModal = (item?: GeometryType) => { if (item) { setEditingItem(item); - setForm({ name: item.name, efficiencyLoss: item.efficiencyLoss.toString() }); + setForm({ name: item.name, efficiencyLoss: (item.efficiencyLoss ?? 0).toString() }); } else { setEditingItem(null); setForm({ name: '', efficiencyLoss: '20' }); diff --git a/src/server/scripts/setAdmin.ts b/src/server/scripts/setAdmin.ts index 3c2988e..06be291 100644 --- a/src/server/scripts/setAdmin.ts +++ b/src/server/scripts/setAdmin.ts @@ -1,11 +1,13 @@ import mongoose from 'mongoose'; import bcrypt from 'bcryptjs'; +import { v4 as uuidv4 } from 'uuid'; const MONGODB_URI = 'mongodb+srv://admtracksteel:29OHAHpKTI8XcCNt@cluster0.a4xiilu.mongodb.net/ts_gpi?retryWrites=true&w=majority&appName=Cluster0'; const UserSchema = new mongoose.Schema({ + clerkId: { type: String, required: true, unique: true }, email: { type: String, required: true, unique: true }, - password: { type: String, required: true }, + passwordHash: { type: String, required: true }, name: { type: String, required: true }, role: { type: String, enum: ['guest', 'user', 'admin'], default: 'guest' }, organizationId: String, @@ -13,54 +15,58 @@ const UserSchema = new mongoose.Schema({ }, { timestamps: true }); async function fixAdmin() { - await mongoose.connect(MONGODB_URI); - console.log('✅ Conectado ao MongoDB'); + try { + await mongoose.connect(MONGODB_URI); + console.log('✅ Conectado ao MongoDB'); - const User = mongoose.models.User || mongoose.model('User', UserSchema); + const User = mongoose.models.User || mongoose.model('User', UserSchema); - const email = 'admtracksteel@gmail.com'; - const password = 'admin'; // Senha padrão temporária - const hashedPassword = await bcrypt.hash(password, 10); + const email = 'admtracksteel@gmail.com'; + const password = 'admin'; // Senha padrão temporária + const hashedPassword = await bcrypt.hash(password, 10); - // Tenta encontrar o usuário existente ou criar um novo - let user = await User.findOne({ email }); + // Tenta encontrar o usuário existente + let user = await User.findOne({ email }); - if (user) { - const result = await User.updateOne( - { email }, - { - $set: { - role: 'admin', - password: hashedPassword, - name: 'Admin TrackSteel' - } - } - ); - console.log(`✅ Usuário ${email} atualizado para admin e senha definida.`); - } else { - await User.create({ - email, - password: hashedPassword, - name: 'Admin TrackSteel', - role: 'admin', - organizationId: 'default-org' + if (user) { + const result = await User.updateOne( + { email }, + { + $set: { + role: 'admin', + passwordHash: hashedPassword, + name: 'Admin TrackSteel' + } + } + ); + console.log(`✅ Usuário ${email} atualizado para admin e senha definida.`); + } else { + const fakeClerkId = `user_${uuidv4().replace(/-/g, '')}`; + await User.create({ + clerkId: fakeClerkId, + email, + passwordHash: hashedPassword, + name: 'Admin TrackSteel', + role: 'admin', + organizationId: 'default-org' + }); + console.log(`✅ Usuário ${email} criado como admin (ClerkId: ${fakeClerkId}).`); + } + + // Listar todos os usuários + const users = await User.find({}); + console.log('\n📋 Usuários atuais:'); + users.forEach((u, i) => { + console.log(` ${i + 1}. ${u.email} | role: ${u.role} | hasHash: ${!!u.passwordHash}`); }); - console.log(`✅ Usuário ${email} criado como admin.`); + + } catch (err) { + console.error('❌ Erro durante a execução:', err); + } finally { + await mongoose.disconnect(); + console.log('\n✅ Desconectado do MongoDB'); + process.exit(0); } - - // Listar todos os usuários - const users = await User.find({}); - console.log('\n📋 Usuários atuais:'); - users.forEach((u, i) => { - console.log(` ${i + 1}. ${u.email} | role: ${u.role}`); - }); - - await mongoose.disconnect(); - console.log('\n✅ Desconectado do MongoDB'); - process.exit(0); } -fixAdmin().catch(err => { - console.error('❌ Erro:', err); - process.exit(1); -}); +fixAdmin();