64 lines
2.7 KiB
JavaScript
64 lines
2.7 KiB
JavaScript
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; |