const express = require('express'); const router = express.Router(); var routes = function () { router.get('/ativarUsuario/:idusuarios', function (req, res) { const idusuarios = parseInt(req.params.idusuarios); if (!idusuarios || isNaN(idusuarios)) { return res.status(400).send(RenderPaginaAtivacao({ sucesso: false, titulo: 'Link inválido', mensagem: 'O link de ativação utilizado é inválido ou está incompleto.', textoBotao: 'Voltar ao site' })); } const sqlQuery = ` UPDATE usuarios SET habilitado = 1 WHERE idusuarios = ?; `; mysqlConnection.query(sqlQuery, [idusuarios], function (error, results) { console.log(`${new Date().toUTCString()} - ${req.originalUrl} ${(error) ? '500 error' : '200 success'}`); if (error) { return res.status(500).send(RenderPaginaAtivacao({ sucesso: false, titulo: 'Erro ao ativar conta', mensagem: 'Não foi possível ativar sua conta no momento. Tente novamente mais tarde ou entre em contato com o suporte.', textoBotao: 'Voltar ao site' })); } if (!results || results.affectedRows === 0) { return res.status(404).send(RenderPaginaAtivacao({ sucesso: false, titulo: 'Conta não encontrada', mensagem: 'Não encontramos uma conta associada a este link de ativação.', textoBotao: 'Voltar ao site' })); } return res.status(200).send(RenderPaginaAtivacao({ sucesso: true, titulo: 'Conta ativada com sucesso!', mensagem: 'Sua conta foi ativada e você já pode acessar a plataforma Zendion, INC.', textoBotao: 'Entrar agora' })); }); }); function RenderPaginaAtivacao({ sucesso, titulo, mensagem, textoBotao }) { const corPrincipal = sucesso ? '#071b63' : '#991b1b'; const corFundoIcone = sucesso ? '#dcfce7' : '#fee2e2'; const corIcone = sucesso ? '#15803d' : '#b91c1c'; const icone = sucesso ? '✓' : '!'; const linkBotao = sucesso ? 'https://zendioninc.com.br/login' : 'https://zendioninc.com.br/home'; return ` ${titulo}
Zendion, INC.
${icone}

${titulo}

${mensagem}

${textoBotao}

Zendion, INC. • Este é um processo automático de ativação de conta.

`; } router.get('/getUsuarios', function (req, res) { const sqlQuery = `SELECT * FROM usuarios;`; ExecuteQuery(sqlQuery, req, res); }); router.get('/getUsuarioByID/:idusuarios', function (req, res) { const idusuarios = parseInt(req.params.idusuarios); const sqlQuery = `SELECT * FROM usuarios WHERE idusuarios = ${idusuarios};`; ExecuteQuery(sqlQuery, req, res); }); router.get('/getSistemasDoUsuario/:idusuarios', function (req, res) { const idusuarios = parseInt(req.params.idusuarios); const sqlQuery = `SELECT s.idsistemas, s.nome, su.data_download, su.idusuarios, s.descricao, (SELECT COUNT(1) FROM chaves cv WHERE cv.idsistemas = s.idsistemas AND cv.idusuarios = su.idusuarios AND cv.data_validade > CURRENT_DATE) AS chavesValidas, CASE WHEN s.idtiposlicenca = 6 THEN 1 ELSE 0 END AS gratis FROM sistemasusuario su INNER JOIN sistemas s ON s.idsistemas = su.idsistemas WHERE su.idusuarios = ${idusuarios};`; ExecuteQuery(sqlQuery, req, res); }); router.post('/authUser', function (req, res) { let usuario = req.body.usuario; let senha = req.body.senha; const sqlQuery = `SELECT idusuarios, nome, idtiposdeusuario, habilitado FROM usuarios WHERE usuario = '${usuario}' AND senha = '${senha}';`; ExecuteQuery(sqlQuery, req, res); }); router.get('/getTiposdeusuario', function (req, res) { const sqlQuery = `SELECT * FROM tiposdeusuario;`; ExecuteQuery(sqlQuery, req, res); }); router.post('/insertUsuarios', function (req, res) { let idusuarios = req.body.idusuarios; let nome = req.body.nome; let usuario = req.body.usuario; let senha = req.body.senha; let email = req.body.email; let idtiposdeusuario = req.body.idtiposdeusuario; let cpf = req.body.cpf; let habilitado = req.body.habilitado ? 1 : 0; const sqlQuery = `INSERT INTO usuarios (nome, usuario, senha, data_cadastro, cpf, habilitado, email, idtiposdeusuario) VALUES ('${nome}', UPPER('${usuario}'), UPPER('${senha}'), now(), '${cpf}', ${habilitado}, '${email}', ${idtiposdeusuario});`; ExecuteQuery(sqlQuery, req, res); }); router.patch('/updateUsuarios', function (req, res) { let idusuarios = req.body.idusuarios; let nome = req.body.nome; let usuario = req.body.usuario; let senha = req.body.senha; let email = req.body.email; let idtiposdeusuario = req.body.idtiposdeusuario; let cpf = req.body.cpf; let habilitado = req.body.habilitado ? 1 : 0; const sqlQuery = `UPDATE usuarios SET nome = '${nome}', usuario = UPPER('${usuario}'), senha = UPPER('${senha}'), cpf = '${cpf}', habilitado = ${habilitado}, email = '${email}', idtiposdeusuario = ${idtiposdeusuario} WHERE idusuarios = ${idusuarios};`; ExecuteQuery(sqlQuery, req, res); }); router.delete('/deleteUsuarios/:idusuarios', function (req, res) { let idusuarios = parseInt(req.params.idusuarios); const sqlQuery = `DELETE FROM usuarios WHERE idusuarios = ${idusuarios};`; ExecuteQuery(sqlQuery, req, res); }); router.post('/setUsada', function (req, res) { let chave = req.body.Chave; const sqlQuery = `UPDATE chaves SET usada = 1 WHERE licenca = '${chave}';`; ExecuteQuery(sqlQuery, req, res); }); router.post('/validaLicenca', function (req, res) { let usuario = req.body.Usuario; let senha = req.body.Senha; let chave = req.body.Chave; const sqlQuery = `SELECT u.nome AS Nome, u.cpf AS CPF, c.usada AS Usada, c.idsistemas AS IDSistema FROM chaves c INNER JOIN usuarios u ON c.idusuarios = u.idusuarios WHERE c.licenca = '${chave}' AND u.usuario = '${usuario}' AND u.senha = '${senha}' AND u.habilitado = 1 AND c.usada = 0;`; ExecuteQuery(sqlQuery, req, res); }); router.post('/insertTrocasenha', function (req, res) { let idusuarios = parseInt(req.body.idusuarios); let tag = req.body.tag; const sqlQuery = `INSERT INTO trocasenha (idusuarios, tag, usada) VALUES (${idusuarios}, '${tag}', 0);`; ExecuteQuery(sqlQuery, req, res); }); router.get('/getTrocasenha', function (req, res, next) { const sqlQuery = `SELECT * FROM trocasenha WHERE usada = 0;`; ExecuteQuery(sqlQuery, req, res); }); router.get('/getTrocasenhaByTag/:tag', function (req, res, next) { let tag = req.params.tag; const sqlQuery = `SELECT * FROM trocasenha WHERE tag = '${tag}' AND usada = 0;`; ExecuteQuery(sqlQuery, req, res); }); router.post('/setExpirado', function (req, res, next) { let tag = req.body.tag; const sqlQuery = `UPDATE trocasenha SET usada = 1 WHERE tag = '${tag}';`; ExecuteQuery(sqlQuery, req, res); }); router.patch('/trocaSenha', function (req, res, next) { const idusuarios = parseInt(req.body.idusuarios); const senha = req.body.senha; const sqlQuery = `UPDATE usuarios SET senha = UPPER('${senha}') WHERE idusuarios = ${idusuarios};`; ExecuteQuery(sqlQuery, req, res); }); router.post('/validaLicencaByChave/:idsistemas', function (req, res, next) { const idsistemas = parseInt(req.params.idsistemas); const chave = req.body.Chave; const sqlQuery = `SELECT u.nome AS Nome, u.cpf AS CPF, c.usada AS Usada, c.idsistemas AS IDSistema FROM chaves c INNER JOIN usuarios u ON c.idusuarios = u.idusuarios WHERE c.licenca = '${chave}' AND c.idsistemas = ${idsistemas} AND u.habilitado = 1 AND c.usada = 0;`; ExecuteQuery(sqlQuery, req, res); }); return router; } module.exports = routes;