82 lines
2.9 KiB
JavaScript
82 lines
2.9 KiB
JavaScript
/**
|
|
Archivo con los metodos necesarios para la asignacion de un administrador
|
|
introducido por parametro e inactivacion del administrador por defecto.
|
|
*/
|
|
|
|
const Promise = require('bluebird');
|
|
const {Client} = require('pg');
|
|
const config = require(`${__dirname}/src/config/config`)().database;
|
|
|
|
console.log('Revisnado el config obtenido', config);
|
|
const configDB = `${config.params.dialect}://${config.username}:${config.password}@${config.params.host}:${config.params.port}/${config.name}`;
|
|
|
|
const pgCliente = new Client(configDB);
|
|
|
|
pgCliente.connect();
|
|
const usuario = JSON.parse(process.env.npm_config_argv).remain[0];
|
|
const fecha = new Date();
|
|
const fechaEnviar = `${fecha.getFullYear()}-${fecha.getMonth()+1}-${fecha.getDate()}`;
|
|
|
|
// Inactiva al usuario admin por defecto.
|
|
ejecutarConsulta("UPDATE usuario SET estado = 'INACTIVO' WHERE usuario = 'admin';")
|
|
|
|
.then(() =>
|
|
|
|
// Busca el identificador del usuario.
|
|
ejecutarConsulta(`SELECT id_usuario from usuario where usuario ='${usuario}'`)
|
|
.then(pRespuestaUsuario => {
|
|
|
|
if(pRespuestaUsuario.length>0){
|
|
// Valida si el usuario ya posee el rol.
|
|
return ejecutarConsulta(`SELECT fid_usuario FROM usuario_rol WHERE fid_usuario=${pRespuestaUsuario[0].id_usuario} AND fid_rol=1;`)
|
|
.then(pRespuestaRol => {
|
|
// Si el usuario ya posee el rol administrador.
|
|
if(pRespuestaRol.length>0){
|
|
console.log(`El usuario ${usuario} ya cuenta con los privilegios de administrador.`);
|
|
pgCliente.end();
|
|
}
|
|
// Si no posee el rol administrador.
|
|
else{
|
|
// Crea la relacion usuario-rol para otorgar rol administrador.
|
|
return ejecutarConsulta(`INSERT INTO usuario_rol(fid_usuario, fid_rol, estado, _usuario_creacion, _fecha_creacion,_fecha_modificacion)
|
|
VALUES (${pRespuestaUsuario[0].id_usuario}, 1, 'ACTIVO', 1,'${fechaEnviar}','${fechaEnviar}');`)
|
|
.then(pRespuestaCrear => {
|
|
console.log(`El usuario ${usuario}, ahora posee los privilegios de administrador.`);
|
|
pgCliente.end();
|
|
})
|
|
}
|
|
})
|
|
}
|
|
else {
|
|
console.log(`El usuario ${usuario} no existe, verifique la informacion introducida.`);
|
|
pgCliente.end();
|
|
}
|
|
})
|
|
|
|
)
|
|
.catch(pError => {
|
|
console.log("Error al ejecutar la consulta", pError);
|
|
pgCliente.end();
|
|
})
|
|
|
|
/**
|
|
Funcion que ejecuta una promesa.
|
|
@param {pConsulta} Texto Cadena que contiene la consulta a ejecutar.
|
|
@return retorna una promesa.
|
|
*/
|
|
function ejecutarConsulta(pConsulta){
|
|
|
|
return new Promise((resolve,reject) => {
|
|
pgCliente.query(pConsulta)
|
|
.then(resp => {
|
|
if(resp.command == 'UPDATE') (resp.rowCount ==1)? resolve(true):resolve(false);
|
|
else if(resp.command == 'INSERT') (resp.rowCount ==1)?resolve(true):resolve(false);
|
|
else resolve(resp.rows);
|
|
})
|
|
.catch(errorQuery => {
|
|
console.log('Error en el query', errorQuery);
|
|
resolve(false);
|
|
});
|
|
});
|
|
}
|