const express = require('express'); const cors = require('cors'); require('dotenv').config(); const app = express(); // Middleware CORS const corsOptions = { origin: function (origin, callback) { // Permitir requisições sem origin (mobile apps, Postman, etc) if (!origin) return callback(null, true); // Lista de origens permitidas const allowedOrigins = [ 'https://admin.noidle.tech', 'https://admin.noidle.co', 'http://localhost:3000', 'http://localhost:3001' ]; if (allowedOrigins.indexOf(origin) !== -1 || origin.includes('localhost')) { callback(null, true); } else { callback(null, true); // Permitir todas por enquanto, pode restringir depois } }, credentials: true, methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], allowedHeaders: ['Content-Type', 'Authorization', 'X-API-Key'] }; app.use(cors(corsOptions)); app.use(express.json()); app.use(express.urlencoded({ extended: true })); // Log app.use((req, res, next) => { console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`); next(); }); // Rotas const authRoutes = require('./routes/auth'); const dashboardRoutes = require('./routes/dashboard'); const devicesRoutes = require('./routes/devices'); const activitiesRoutes = require('./routes/activities'); const activityRoutes = require('./routes/activity'); const keysRoutes = require('./routes/keys'); const usersRoutes = require('./routes/users'); const teamsRoutes = require("./routes/teams"); const policiesRoutes = require('./routes/policies'); const mdmRoutes = require('./routes/mdm'); app.use('/api/auth', authRoutes); app.use('/api/dashboard', dashboardRoutes); app.use('/api/devices', devicesRoutes); app.use('/api/activities', activitiesRoutes); app.use("/api/activity", activityRoutes); app.use('/api/keys', keysRoutes); app.use('/api/users', usersRoutes); app.use("/api/teams", teamsRoutes); app.use('/api/policies', policiesRoutes); app.use('/api/mdm', mdmRoutes); // Health check app.get('/api/health', (req, res) => { res.json({ status: 'ok', timestamp: new Date().toISOString() }); }); // 404 app.use((req, res) => { res.status(404).json({ error: 'Rota não encontrada' }); }); // Error handler app.use((err, req, res, next) => { console.error('Erro:', err); res.status(500).json({ error: 'Erro interno do servidor' }); }); const PORT = process.env.PORT || 3005; app.listen(PORT, () => { console.log(`✅ NoIdle API rodando na porta ${PORT}`); console.log(`📅 ${new Date().toISOString()}`); });