feat: reestruturacao de menus na sidebar, niveis de acesso e migracao para postgresql/dragonflydb
continuous-integration/webhook Deploy concluido (rx.scoreodonto.com)

This commit is contained in:
VPS 4 Builder
2026-05-26 21:08:48 +02:00
parent dc1801f4a7
commit 5b0d80bf22
29 changed files with 257 additions and 7187 deletions
+8 -10
View File
@@ -14,7 +14,6 @@ const jwt = require('jsonwebtoken');
const db = require('./database');
const authRoutes = require('./routes/auth');
const imageRoutes = require('./routes/images');
const patientsRouter = require('./routes/patients');
const gtosRouter = require('./routes/gtos');
const systemRoutes = require('./routes/system');
const adminClinicsRoutes = require('./routes/admin-clinics');
@@ -60,7 +59,6 @@ app.use(cookieParser());
// ================================================================
// ROTAS DA API
// ================================================================
app.use('/api/patients', patientsRouter);
// ================================================================
// ROTAS PÚBLICAS (SEMPRE ACESSÍVEIS)
@@ -104,7 +102,7 @@ app.get('/api/clients/check-name', async (req, res) => {
}
// 1. Verificar se existe no banco de dados na tabela images (busca case-insensitive)
const row = await db.get('SELECT COUNT(*) as count FROM images WHERE LOWER(client_name) = LOWER(?)', [name]);
const row = await db.get('SELECT COUNT(*) as count FROM images WHERE LOWER(client_name) = LOWER($1)', [name]);
const existsInDb = row && row.count > 0;
// 2. Verificar se existe algum cliente atualmente conectado com esse nome (desconsiderando o próprio clientId)
@@ -348,10 +346,10 @@ app.post('/api/install', async (req, res) => {
const passwordHash = await hashPassword(admin.password);
await db.run(
`INSERT INTO users (username, email, password_hash, created_at)
VALUES (?, ?, ?, NOW())
ON DUPLICATE KEY UPDATE
email = VALUES(email),
password_hash = VALUES(password_hash)`,
VALUES ($1, $2, $3, CURRENT_TIMESTAMP)
ON CONFLICT (username) DO UPDATE SET
email = EXCLUDED.email,
password_hash = EXCLUDED.password_hash`,
[admin.username, admin.email, passwordHash]
);
console.log('✅ Usuário admin criado:', admin.username);
@@ -749,7 +747,7 @@ io.on('connection', (socket) => {
// Verificar se a imagem já foi inserida no banco
const existing = await db.get(
"SELECT id, filename FROM images WHERE original_filename = ? AND enabled = 1 LIMIT 1",
"SELECT id, filename FROM images WHERE original_filename = $1 AND enabled = 1 LIMIT 1",
[data.metadata.fileName]
);
if (existing) {
@@ -806,7 +804,7 @@ io.on('connection', (socket) => {
doctor,
remark,
created_at
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)`,
[
data.metadata.guid,
data.patientData.name || 'Paciente não identificado',
@@ -873,7 +871,7 @@ io.on('connection', (socket) => {
}
const existing = await db.get(
"SELECT id, filename FROM images WHERE original_filename = ? AND enabled = 1 LIMIT 1",
"SELECT id, filename FROM images WHERE original_filename = $1 AND enabled = 1 LIMIT 1",
[data.fileName]
);