const execQuery = require('../connector'); const db = require('../connector'); const express = require('express'); const fs = require('fs'); const path = require('path'); const axios = require('axios'); const router = express.Router(); const routes = function () { router.post('/login', async (req, res) => { const login = req.body[0]; const query = 'CALL login (?, ?, ?, @success, @role, @userId, @userName, @validated); SELECT @success AS success, @role AS role, @userId as userId, @userName as userName, @validated as validated;'; try { // Faça uma solicitação GET para a API ipify para capturar o IP do cliente const response = await axios.get('https://api.ipify.org/?format=text'); const clientIp = response.data; // Aqui você pode continuar com sua lógica de login e executar a consulta. execQuery(query, [login.email, login.password, clientIp], req, res); } catch (error) { console.error('Erro ao obter o IP do cliente:', error); execQuery(query, [login.email, login.password, req.socket.remoteAddress], req, res); } }); router.post('/loginBook', async (req, res) => { const login = req.body; const query = 'CALL loginBook (?, ?, @success, @userId, @courseId, @courseName, @ext); SELECT @success AS success, @userId as userId, @courseId as courseId, @courseName as courseName, @ext as ext;'; try { const response = await axios.get('https://api.ipify.org/?format=text'); const clientIp = response.data; execQuery(query, [login.accesskey, clientIp], req, res, (results, callback) => { // Caminho físico do arquivo const course = results[1][0]; const bookFile = path.join('/var/www/html/maker_book/materials', `course_${course["courseId"]}${course["ext"]}`); let modifiedAt = null; if (fs.existsSync(bookFile)) { const stats = fs.statSync(bookFile); modifiedAt = stats.mtime.toISOString(); // formato compatível com Flutter } // results[1][0] é a SELECT final com os dados que o app espera if (results[1] && results[1][0]) { results[1][0].modifiedAt = modifiedAt; } callback(results); // continua fluxo padrão }); } catch (error) { console.error('Erro ao obter o IP do cliente:', error); execQuery(query, [login.accesskey, req.socket.remoteAddress], req, res); } }); return router; } module.exports = routes;