utn-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/backend.js +282 -0
- package/commands/db.js +49 -0
- package/commands/frontend.js +225 -0
- package/index.js +98 -0
- package/package.json +27 -0
- package/templates/backend/InformacionDelModulo.json +21 -0
- package/templates/backend/NOMBRE_DEL_CANONICO_DEL_PROYECTO.rest +74 -0
- package/templates/backend/README.md +0 -0
- package/templates/backend/gitignore +3 -0
- package/templates/backend/index.rest +288 -0
- package/templates/backend/package.json +30 -0
- package/templates/backend/reporte.pdf +0 -0
- package/templates/backend/rutas/API.js +49 -0
- package/templates/backend/rutas/Servicio1.js +184 -0
- package/templates/backend/rutas/misc.js +671 -0
- package/templates/backend/rutas/rutas.js +11 -0
- package/templates/backend/server.js +79 -0
- package/templates/backend/servicios/API.js +101 -0
- package/templates/backend/servicios/InformacionDelModulo.js +70 -0
- package/templates/backend/servicios/Nucleo/EnvioDeCorreos.js +45 -0
- package/templates/backend/servicios/Nucleo/ManejadorDeErrores.js +54 -0
- package/templates/backend/servicios/Nucleo/Miscelaneas.js +1901 -0
- package/templates/backend/servicios/Nucleo/Monitoreo.js +65 -0
- package/templates/backend/servicios/Nucleo/db.js +78 -0
- package/templates/backend/servicios/Servicio1.js +118 -0
- package/templates/backend/variables-calidad.env +6 -0
- package/templates/backend/variables-desarrollo.env +6 -0
- package/templates/backend/variables-pruebas.env +6 -0
- package/templates/bd/README.md +78 -0
- package/templates/bd/cumulodb-scripts/gitignore +1 -0
- package/templates/bd/docker-compose.yml +28 -0
- package/templates/bd/docker-scripts/1-crear estructura.sql +29 -0
- package/templates/bd/docker-scripts/2-cambios estructura original.sql +1 -0
- package/templates/bd/docker-scripts/3-insertar datos de prueba.sql +1 -0
- package/templates/bd/docker-scripts/4-crear eventos y rutinas.sql +1 -0
- package/templates/bd/docker-scripts/5-crear vistas.sql +1 -0
- package/templates/bd/docker-scripts/6-calidad.sql +1 -0
- package/templates/bd/docker-scripts/7-pruebas.sql +1 -0
- package/templates/bd/docker-scripts/8-local.sql +1 -0
- package/templates/bd/servidores-scripts/calidad.sql +1 -0
- package/templates/bd/servidores-scripts/datos_iniciales_produccion.sql +1 -0
- package/templates/bd/servidores-scripts/produccion.sql +1 -0
- package/templates/bd/servidores-scripts/pruebas.sql +1 -0
- package/templates/frontend/.vscode/extensions.json +4 -0
- package/templates/frontend/.vscode/launch.json +20 -0
- package/templates/frontend/.vscode/tasks.json +42 -0
- package/templates/frontend/Dockerfile +5 -0
- package/templates/frontend/README.md +59 -0
- package/templates/frontend/angular.json +101 -0
- package/templates/frontend/dist/frontend/3rdpartylicenses.txt +459 -0
- package/templates/frontend/dist/frontend/prerendered-routes.json +3 -0
- package/templates/frontend/docker-compose.yml +5 -0
- package/templates/frontend/editorconfig +17 -0
- package/templates/frontend/gitignore +45 -0
- package/templates/frontend/nginx.conf +12 -0
- package/templates/frontend/package.json +46 -0
- package/templates/frontend/public/favicon.ico +0 -0
- package/templates/frontend/src/app/Componentes/Nucleo/graficos/graficos.component.css +15 -0
- package/templates/frontend/src/app/Componentes/Nucleo/graficos/graficos.component.html +25 -0
- package/templates/frontend/src/app/Componentes/Nucleo/graficos/graficos.component.ts +80 -0
- package/templates/frontend/src/app/Componentes/Nucleo/iframe/iframe.ts +37 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensaje-confirmacion/mensaje-confirmacion.component.css +5 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensaje-confirmacion/mensaje-confirmacion.component.html +22 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensaje-confirmacion/mensaje-confirmacion.ts +64 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensaje-confirmacion-html/mensaje-confirmacion-html.component.css +5 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensaje-confirmacion-html/mensaje-confirmacion-html.component.html +22 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensaje-confirmacion-html/mensaje-confirmacion-html.ts +64 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensaje-informacion/mensaje-informacion.component.css +5 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensaje-informacion/mensaje-informacion.component.html +11 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensaje-informacion/mensaje-informacion.ts +46 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensajes/mensajes.component.css +11 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensajes/mensajes.component.html +17 -0
- package/templates/frontend/src/app/Componentes/Nucleo/mensajes/mensajes.component.ts +43 -0
- package/templates/frontend/src/app/Componentes/Nucleo/reporte-de-incidencias/reporte-de-incidencias.component.css +37 -0
- package/templates/frontend/src/app/Componentes/Nucleo/reporte-de-incidencias/reporte-de-incidencias.component.html +35 -0
- package/templates/frontend/src/app/Componentes/Nucleo/reporte-de-incidencias/reporte-de-incidencias.component.ts +103 -0
- package/templates/frontend/src/app/Componentes/Nucleo/subir-archivo/subir-archivo.component.css +90 -0
- package/templates/frontend/src/app/Componentes/Nucleo/subir-archivo/subir-archivo.component.html +39 -0
- package/templates/frontend/src/app/Componentes/Nucleo/subir-archivo/subir-archivo.component.ts +132 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tabla/paginador-personalizado.ts +17 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tabla/tabla.component.css +332 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tabla/tabla.component.html +166 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tabla/tabla.component.ts +228 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta/tarjeta.component.css +129 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta/tarjeta.component.html +35 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta/tarjeta.component.ts +46 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta-modulo/tarjeta-modulo.component.css +92 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta-modulo/tarjeta-modulo.component.html +17 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta-modulo/tarjeta-modulo.component.ts +42 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta-multiple/tarjeta-multiple.component.css +90 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta-multiple/tarjeta-multiple.component.html +22 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta-multiple/tarjeta-multiple.component.ts +46 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta-reporte/tarjeta-reporte.component.css +129 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta-reporte/tarjeta-reporte.component.html +20 -0
- package/templates/frontend/src/app/Componentes/Nucleo/tarjeta-reporte/tarjeta-reporte.component.ts +25 -0
- package/templates/frontend/src/app/Componentes/guardar-incapacidad/guardar-incapacidad.component.css +20 -0
- package/templates/frontend/src/app/Componentes/guardar-incapacidad/guardar-incapacidad.component.html +46 -0
- package/templates/frontend/src/app/Componentes/guardar-incapacidad/guardar-incapacidad.component.ts +64 -0
- package/templates/frontend/src/app/Paginas/Nucleo/contenedor-componentes/contenedor-componentes.component.css +142 -0
- package/templates/frontend/src/app/Paginas/Nucleo/contenedor-componentes/contenedor-componentes.component.html +90 -0
- package/templates/frontend/src/app/Paginas/Nucleo/contenedor-componentes/contenedor-componentes.component.ts +139 -0
- package/templates/frontend/src/app/Paginas/contenedor-principal/contenedor-principal.component.css +4 -0
- package/templates/frontend/src/app/Paginas/contenedor-principal/contenedor-principal.component.html +17 -0
- package/templates/frontend/src/app/Paginas/contenedor-principal/contenedor-principal.component.ts +36 -0
- package/templates/frontend/src/app/Paginas/gestion-de-reportes/gestion-de-reportes.component.css +4 -0
- package/templates/frontend/src/app/Paginas/gestion-de-reportes/gestion-de-reportes.component.html +6 -0
- package/templates/frontend/src/app/Paginas/gestion-de-reportes/gestion-de-reportes.component.ts +36 -0
- package/templates/frontend/src/app/Paginas/gestion-graficos/gestion-graficos.component.css +13 -0
- package/templates/frontend/src/app/Paginas/gestion-graficos/gestion-graficos.component.html +13 -0
- package/templates/frontend/src/app/Paginas/gestion-graficos/gestion-graficos.component.ts +75 -0
- package/templates/frontend/src/app/Paginas/gestion-iframe1/gestion-iframe1.component.css +13 -0
- package/templates/frontend/src/app/Paginas/gestion-iframe1/gestion-iframe1.component.html +3 -0
- package/templates/frontend/src/app/Paginas/gestion-iframe1/gestion-iframe1.component.ts +14 -0
- package/templates/frontend/src/app/Paginas/gestion-tabla/gestion-tabla.component.css +13 -0
- package/templates/frontend/src/app/Paginas/gestion-tabla/gestion-tabla.component.html +24 -0
- package/templates/frontend/src/app/Paginas/gestion-tabla/gestion-tabla.component.ts +300 -0
- package/templates/frontend/src/app/Paginas/gestion-tabla-XYZ/gestion-tabla-XYZ.component.css +13 -0
- package/templates/frontend/src/app/Paginas/gestion-tabla-XYZ/gestion-tabla-XYZ.component.html +43 -0
- package/templates/frontend/src/app/Paginas/gestion-tabla-XYZ/gestion-tabla-XYZ.component.ts +305 -0
- package/templates/frontend/src/app/Paginas/gestion-tabla-jefe/gestion-tabla-jefe.component.css +13 -0
- package/templates/frontend/src/app/Paginas/gestion-tabla-jefe/gestion-tabla-jefe.component.html +25 -0
- package/templates/frontend/src/app/Paginas/gestion-tabla-jefe/gestion-tabla-jefe.component.ts +245 -0
- package/templates/frontend/src/app/analytics.module.ts +45 -0
- package/templates/frontend/src/app/app.component.css +0 -0
- package/templates/frontend/src/app/app.component.html +1 -0
- package/templates/frontend/src/app/app.component.ts +10 -0
- package/templates/frontend/src/app/app.config.server.ts +14 -0
- package/templates/frontend/src/app/app.config.ts +27 -0
- package/templates/frontend/src/app/app.routes.ts +16 -0
- package/templates/frontend/src/app/auth.interceptor.ts +26 -0
- package/templates/frontend/src/app/datos-globales.service.ts +45 -0
- package/templates/frontend/src/assets/Puntos.svg +94 -0
- package/templates/frontend/src/index.html +36 -0
- package/templates/frontend/src/main.server.ts +7 -0
- package/templates/frontend/src/main.ts +6 -0
- package/templates/frontend/src/styles.css +14 -0
- package/templates/frontend/tsconfig.app.json +15 -0
- package/templates/frontend/tsconfig.json +27 -0
- package/templates/frontend/tsconfig.spec.json +15 -0
- package/utils/index.js +105 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
Error.stackTraceLimit = Infinity;
|
|
2
|
+
const express = require('express');
|
|
3
|
+
const helmet = require('helmet');
|
|
4
|
+
const cors = require('cors');
|
|
5
|
+
const Miscelaneo = require('./servicios/Nucleo/Miscelaneas.js');
|
|
6
|
+
|
|
7
|
+
const asignarRutasAExpress = require('./rutas/rutas.js');
|
|
8
|
+
|
|
9
|
+
const app = express();
|
|
10
|
+
app.use(express.json());
|
|
11
|
+
app.use(helmet());
|
|
12
|
+
app.use(async (solicitud, respuesta, next) => {
|
|
13
|
+
const safeReqData = {
|
|
14
|
+
timestamp: new Date().toISOString(),
|
|
15
|
+
httpVersion: solicitud.httpVersion,
|
|
16
|
+
method: solicitud.method,
|
|
17
|
+
protocol: solicitud.protocol,
|
|
18
|
+
secure: solicitud.secure,
|
|
19
|
+
ip: solicitud.ip,
|
|
20
|
+
ips: solicitud.ips,
|
|
21
|
+
hostname: solicitud.hostname,
|
|
22
|
+
originalUrl: solicitud.originalUrl,
|
|
23
|
+
baseUrl: solicitud.baseUrl,
|
|
24
|
+
path: solicitud.path,
|
|
25
|
+
url: solicitud.url,
|
|
26
|
+
headers: solicitud.headers,
|
|
27
|
+
query: solicitud.query,
|
|
28
|
+
params: solicitud.params,
|
|
29
|
+
body: solicitud.body,
|
|
30
|
+
cookies: solicitud.cookies,
|
|
31
|
+
signedCookies: solicitud.signedCookies,
|
|
32
|
+
userAgent: solicitud.get('User-Agent'),
|
|
33
|
+
authUser: solicitud.user ?? null,
|
|
34
|
+
};
|
|
35
|
+
try {
|
|
36
|
+
const { ejecutarConsultaSIGU } = require('./servicios/Nucleo/db.js');
|
|
37
|
+
const sql = 'INSERT IGNORE `SIGU`.`SIGU_BitacoraDeSolicitudes` (`Solicitud`) VALUES (?)';
|
|
38
|
+
await ejecutarConsultaSIGU(sql, [JSON.stringify(safeReqData)]);
|
|
39
|
+
} catch (error) {
|
|
40
|
+
console.error('Error al guardar el log de la solicitud:', error);
|
|
41
|
+
}
|
|
42
|
+
next();
|
|
43
|
+
});
|
|
44
|
+
app.use((solicitud, respuesta, next) => {
|
|
45
|
+
const origin = solicitud.get("Origin");
|
|
46
|
+
if (!origin) {
|
|
47
|
+
return respuesta.status(403).json({ error: "Acceso denegado: Origin no proporcionado" });
|
|
48
|
+
}
|
|
49
|
+
next();
|
|
50
|
+
});
|
|
51
|
+
app.use(cors({
|
|
52
|
+
credentials: true,
|
|
53
|
+
origin: [/localhost(:\d+)?$/, /\.181\.193\.85\.44\.nip\.io$/, /\.sigu\.utn\.ac\.cr.*$/]
|
|
54
|
+
}));
|
|
55
|
+
|
|
56
|
+
// Esta función se debe llamar cada vez que inicia el backend
|
|
57
|
+
// Ya que no sólo registra el módulo en el SIGU, sino que determina el rol y permisos a utilizar
|
|
58
|
+
Miscelaneo.registroDelModuloEnSIGU();
|
|
59
|
+
|
|
60
|
+
asignarRutasAExpress(app);
|
|
61
|
+
|
|
62
|
+
app.use((error, solicitud, respuesta, next) => {
|
|
63
|
+
const { envioDeCorreo } = require('./servicios/Nucleo/EnvioDeCorreos.js');
|
|
64
|
+
envioDeCorreo(process.env.DESTINATARIODEINFORMESDEERROR, 'Informe de error desde: ' + process.env.NOMBRECANONICODELMODULO, error.stack);
|
|
65
|
+
console.error(error.stack);
|
|
66
|
+
respuesta.status(500).send('Error interno del servidor, el detalle del mismo fue enviado a ' + process.env.DESTINATARIODEINFORMESDEERROR);
|
|
67
|
+
});
|
|
68
|
+
// process.on('uncaughtException', (err) => {
|
|
69
|
+
// console.error('Excepción no capturada:', err);
|
|
70
|
+
// });
|
|
71
|
+
|
|
72
|
+
// process.on('unhandledRejection', (reason, promise) => {
|
|
73
|
+
// console.error('Promesa no manejada:', reason);
|
|
74
|
+
// });
|
|
75
|
+
|
|
76
|
+
const servidor = app.listen(process.env.PORT || 80, () => {
|
|
77
|
+
process.env.HOST = servidor.address().address;
|
|
78
|
+
console.log('NOMBRE_DEL_REPOSITORIO_DE_BACKEND');
|
|
79
|
+
});
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
const Miscelaneo = require('./../servicios/Nucleo/Miscelaneas.js');
|
|
2
|
+
|
|
3
|
+
class API {
|
|
4
|
+
|
|
5
|
+
constructor() {
|
|
6
|
+
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
// async cursosPorPersonaAnioYPeriodo(Cuerpo) {
|
|
10
|
+
// let URL = undefined;
|
|
11
|
+
// switch (process.env.ENV) {
|
|
12
|
+
// case 'desarrollo':
|
|
13
|
+
// URL = 'http://dru-matri-s-backend-desarrollo.181.193.85.44.nip.io';
|
|
14
|
+
// break;
|
|
15
|
+
// case 'calidad':
|
|
16
|
+
// URL = 'http://dru-matri-s-backend-calidad.181.193.85.44.nip.io';
|
|
17
|
+
// break;
|
|
18
|
+
// case 'pruebas':
|
|
19
|
+
// URL = 'http://dru-matri-s-backend-pruebas.181.193.85.44.nip.io';
|
|
20
|
+
// break;
|
|
21
|
+
// case 'production':
|
|
22
|
+
// URL = 'https://dru-matri-s-backend.sigu.utn.ac.cr';
|
|
23
|
+
// break;
|
|
24
|
+
// default:
|
|
25
|
+
// URL = 'http://localhost:82';
|
|
26
|
+
// }
|
|
27
|
+
// URL += '/api/cursosPorPersonaAnioYPeriodo';
|
|
28
|
+
// return await Miscelaneo.consumirBackend(URL, Cuerpo);
|
|
29
|
+
// };
|
|
30
|
+
|
|
31
|
+
// async obtenerOfertaAcademica(PeriodoId) {
|
|
32
|
+
// let URL = undefined;
|
|
33
|
+
// switch (process.env.ENV) {
|
|
34
|
+
// case 'desarrollo':
|
|
35
|
+
// URL = 'http://vdoc-trabajoacademico-p-backend-desarrollo.181.193.85.44.nip.io';
|
|
36
|
+
// break;
|
|
37
|
+
// case 'calidad':
|
|
38
|
+
// URL = 'http://vdoc-trabajoacademico-p-backend-calidad.181.193.85.44.nip.io';
|
|
39
|
+
// break;
|
|
40
|
+
// case 'pruebas':
|
|
41
|
+
// URL = 'http://vdoc-trabajoacademico-p-backend-pruebas.181.193.85.44.nip.io';
|
|
42
|
+
// break;
|
|
43
|
+
// case 'production':
|
|
44
|
+
// URL = 'https://vdoc-trabajoacademico-p-backend.sigu.utn.ac.cr';
|
|
45
|
+
// break;
|
|
46
|
+
// default:
|
|
47
|
+
// URL = 'http://localhost:3120';
|
|
48
|
+
// }
|
|
49
|
+
// URL += '/api/obtenerOfertaAcademica/' + PeriodoId;
|
|
50
|
+
|
|
51
|
+
// let OfertaAcademica = await Miscelaneo.consumirBackend(URL);
|
|
52
|
+
// let Materias = await this.obtenerMaterias();
|
|
53
|
+
// return OfertaAcademica.map((item, i) => Object.assign({}, item, Materias[i]));
|
|
54
|
+
// };
|
|
55
|
+
|
|
56
|
+
// async obtenerMaterias() {
|
|
57
|
+
// let URL = undefined;
|
|
58
|
+
// switch (process.env.ENV) {
|
|
59
|
+
// case 'desarrollo':
|
|
60
|
+
// URL = 'http://dgdh-djur-s-backend-desarrollo.181.193.85.44.nip.io';
|
|
61
|
+
// break;
|
|
62
|
+
// case 'calidad':
|
|
63
|
+
// URL = 'http://dgdh-djur-s-backend-calidad.181.193.85.44.nip.io';
|
|
64
|
+
// break;
|
|
65
|
+
// case 'pruebas':
|
|
66
|
+
// URL = 'http://dgdh-djur-s-backend-pruebas.181.193.85.44.nip.io';
|
|
67
|
+
// break;
|
|
68
|
+
// case 'production':
|
|
69
|
+
// URL = 'https://dgdh-djur-s-backend.sigu.utn.ac.cr';
|
|
70
|
+
// break;
|
|
71
|
+
// default:
|
|
72
|
+
// URL = 'http://localhost:3119';
|
|
73
|
+
// }
|
|
74
|
+
// URL += '/api/obtenerMaterias';
|
|
75
|
+
// return await Miscelaneo.consumirBackend(URL);
|
|
76
|
+
// };
|
|
77
|
+
|
|
78
|
+
// async obtenerCarreras() {
|
|
79
|
+
// let URL = undefined;
|
|
80
|
+
// switch (process.env.ENV) {
|
|
81
|
+
// case 'desarrollo':
|
|
82
|
+
// URL = 'http://dgdh-djur-s-backend-desarrollo.181.193.85.44.nip.io';
|
|
83
|
+
// break;
|
|
84
|
+
// case 'calidad':
|
|
85
|
+
// URL = 'http://dgdh-djur-s-backend-calidad.181.193.85.44.nip.io';
|
|
86
|
+
// break;
|
|
87
|
+
// case 'pruebas':
|
|
88
|
+
// URL = 'http://dgdh-djur-s-backend-pruebas.181.193.85.44.nip.io';
|
|
89
|
+
// break;
|
|
90
|
+
// case 'production':
|
|
91
|
+
// URL = 'https://dgdh-djur-s-backend.sigu.utn.ac.cr';
|
|
92
|
+
// break;
|
|
93
|
+
// default:
|
|
94
|
+
// URL = 'http://localhost:3119';
|
|
95
|
+
// }
|
|
96
|
+
// URL += '/api/obtenerCarreras';
|
|
97
|
+
// return await Miscelaneo.consumirBackend(URL);
|
|
98
|
+
// };
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
module.exports = new API();
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
class InformacionDelModulo {
|
|
2
|
+
|
|
3
|
+
constructor() {
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
getNombreDelModulo() {
|
|
7
|
+
return 'NOMBRE_DEL_PROYECTO';
|
|
8
|
+
};
|
|
9
|
+
getDescripcionDelModulo() {
|
|
10
|
+
return 'DESCRIPCION_DEL_PROYECTO';
|
|
11
|
+
};
|
|
12
|
+
getDetalleDelModulo() {
|
|
13
|
+
return 'DETALLE_DEL_PROYECTO';
|
|
14
|
+
};
|
|
15
|
+
getNombreCanonicoDelModulo() {
|
|
16
|
+
return 'NOMBRE_DEL_CANONICO_DEL_PROYECTO';
|
|
17
|
+
};
|
|
18
|
+
getTipoDeCard() {
|
|
19
|
+
return 'TIPO_DE_TARJETA';
|
|
20
|
+
};
|
|
21
|
+
getNombreDelRol() {
|
|
22
|
+
return 'NOMBRE_DEL_ROL';
|
|
23
|
+
};
|
|
24
|
+
getNombreDelRepositorioDeLaBaseDeDatos() {
|
|
25
|
+
return 'NOMBRE_DEL_REPOSITORIO_DE_BASE_DE_DATOS';
|
|
26
|
+
};
|
|
27
|
+
getNombreDelRepositorioDelBackend() {
|
|
28
|
+
return 'NOMBRE_DEL_REPOSITORIO_DE_BACKEND';
|
|
29
|
+
};
|
|
30
|
+
getNombreDelRepositorioDelFrontend() {
|
|
31
|
+
return 'NOMBRE_DEL_REPOSITORIO_DE_FRONTEND';
|
|
32
|
+
};
|
|
33
|
+
getNombreDelPermiso() {
|
|
34
|
+
return 'NOMBRE_DEL_PERMISO';
|
|
35
|
+
};
|
|
36
|
+
getDescripcionDelPermiso() {
|
|
37
|
+
return 'DESCRIPCION_DEL_PERMISO';
|
|
38
|
+
};
|
|
39
|
+
getMenuPadre() {
|
|
40
|
+
// MenuPadre hace referencia al NombreCanonicoDelModulo del menú padre
|
|
41
|
+
// Éste debe existir de lo contrario el registro fallará
|
|
42
|
+
return 'MENU_PADRE';
|
|
43
|
+
};
|
|
44
|
+
getBackEndsQueConsumeEsteModulo() {
|
|
45
|
+
// BackEndsQueConsumeEsteModulo es un arreglo de strings de la forma ['dgf-presup-modifica-p-back', 'dpu-pide-p-back']
|
|
46
|
+
// Se debe poner el nombre del repositorio de backend que se necesita consumir
|
|
47
|
+
// Los repositorios ya deben estar registrados en SIGU o de lo contrario el proceso fallará
|
|
48
|
+
return [BACKENDS_QUE_CONSUME_ESTE_MODULO];
|
|
49
|
+
};
|
|
50
|
+
getPerfilGeneral() {
|
|
51
|
+
// Si no sabe qué poner, puede dejar Servidor
|
|
52
|
+
return 'Servidor';
|
|
53
|
+
};
|
|
54
|
+
getUsuariosConAccesoInicial() {
|
|
55
|
+
// UsuariosConAccesoInicial es un arreglo de strings de la forma ['111050570', '111050570']
|
|
56
|
+
// Este arreglo se usa para asignar acceso a este móudlo, suelen usarse la cédulas de los encargados del proyecto y el desarrollador
|
|
57
|
+
return ['111050570', '204540859', '602990078', '109840817', '206860639', '155821845336', 'CEDULA_DEL_DESARROLLADOR'];
|
|
58
|
+
};
|
|
59
|
+
getColorDelModulo() {
|
|
60
|
+
return 'COLOR_DEL_MODULO';
|
|
61
|
+
};
|
|
62
|
+
getCorreoParaReportes() {
|
|
63
|
+
return 'CORRECO_PARA_REPORTES';
|
|
64
|
+
};
|
|
65
|
+
getVersion() {
|
|
66
|
+
return 'VERSION';
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
module.exports = new InformacionDelModulo();
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const nodemailer = require('nodemailer');
|
|
2
|
+
|
|
3
|
+
function envioDeCorreo(Destinatario, Asunto, MensajeEnHTML, rutasDelosAdjuntos = undefined) {
|
|
4
|
+
|
|
5
|
+
const Transportador = nodemailer.createTransport({
|
|
6
|
+
host: process.env.SERVIDORSMTP,
|
|
7
|
+
port: process.env.PUERTOSMTP,
|
|
8
|
+
secure: false,
|
|
9
|
+
auth: {
|
|
10
|
+
user: process.env.USUARIOSMTP,
|
|
11
|
+
pass: process.env.CLAVESMTP
|
|
12
|
+
},
|
|
13
|
+
tls: {
|
|
14
|
+
rejectUnauthorized: false,
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
const Correo = {
|
|
18
|
+
from: process.env.USUARIOSMTP,
|
|
19
|
+
to: Destinatario,
|
|
20
|
+
subject: Asunto,
|
|
21
|
+
html: MensajeEnHTML
|
|
22
|
+
};
|
|
23
|
+
Transportador.verify(function (error, success) {
|
|
24
|
+
if (error) {
|
|
25
|
+
console.error(`Error en el servicio de correo: ${error}`);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
if (rutasDelosAdjuntos) {
|
|
29
|
+
const Adjuntos = [];
|
|
30
|
+
rutasDelosAdjuntos.forEach((archivo) => {
|
|
31
|
+
const Adjunto = {
|
|
32
|
+
"path": archivo
|
|
33
|
+
};
|
|
34
|
+
Adjuntos.push(Adjunto);
|
|
35
|
+
});
|
|
36
|
+
Correo.attachments = Adjuntos;
|
|
37
|
+
}
|
|
38
|
+
Transportador.sendMail(Correo, function(error, info){
|
|
39
|
+
if (error){
|
|
40
|
+
console.error(`No fue posible enviar el correo debido al error: ${error}`);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
module.exports = { envioDeCorreo };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const { envioDeCorreo } = require('./EnvioDeCorreos.js');
|
|
2
|
+
|
|
3
|
+
class ManejadorDeErrores extends Error {
|
|
4
|
+
|
|
5
|
+
constructor(descripcionDelError, numeroDeLinea, informarError = true, informacionExtra = undefined) {
|
|
6
|
+
super(descripcionDelError);
|
|
7
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
8
|
+
Error.captureStackTrace(this, this.constructor);
|
|
9
|
+
console.error(descripcionDelError + numeroDeLinea);
|
|
10
|
+
if (informarError && process.env.ENV === 'production') {
|
|
11
|
+
envioDeCorreo(process.env.DESTINATARIODEINFORMESDEERROR, 'Informe de error desde: ' + process.env.NOMBRECANONICODELMODULO
|
|
12
|
+
, descripcionDelError + ' ' + numeroDeLinea + '<BR /><BR />' + informacionExtra);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
static obtenerNumeroDeLinea() {
|
|
17
|
+
const error = new Error();
|
|
18
|
+
return error.stack.split("\n")[2];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static mensajeDeError401() {
|
|
22
|
+
return "No está autorizado para consultar los datos";
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static mensajeDeErrorAccesoAAPI(InformacionExtra = undefined) {
|
|
26
|
+
if (InformacionExtra) {
|
|
27
|
+
return `No fue posible obtener los datos del backend destino. ${InformacionExtra}`;
|
|
28
|
+
} else {
|
|
29
|
+
return "No fue posible obtener los datos del backend destino";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static mensajeDeErrorEncabezadoDeAutorizacion() {
|
|
34
|
+
return "No fue posible determinar el identificacdor o token en el encabezado de autorización";
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static mensajeDeErrorVerificacionDeToken() {
|
|
38
|
+
return "No fue posible verificar el token";
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
static mensajeDeErrorTokenInvalido() {
|
|
42
|
+
return "Token inválido";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static mensajeDeErrorPermisosInsuficientes() {
|
|
46
|
+
return "No tiene permisos para acceder al recurso solicitado";
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
static mensajeDeErrorRepositorioOrigen() {
|
|
50
|
+
return "No fue posible determinar el nombre del repositorio origen o su identificador";
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
module.exports = ManejadorDeErrores;
|