Atualização repositorio
This commit is contained in:
152
src/auth/users/users.service.ts
Normal file
152
src/auth/users/users.service.ts
Normal file
@@ -0,0 +1,152 @@
|
||||
/* eslint-disable prettier/prettier */
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
|
||||
import { DataSource } from 'typeorm';
|
||||
import md5 = require('md5');
|
||||
import { Guid } from "guid-typescript";
|
||||
import { typeOrmConfig } from 'src/core/configs/typeorm.config';
|
||||
import { UserModel } from 'src/core/models/user.model';
|
||||
|
||||
|
||||
@Injectable()
|
||||
export class UsersService {
|
||||
async authenticate(user: any): Promise<any> {
|
||||
const dataSource = new DataSource(typeOrmConfig);
|
||||
await dataSource.initialize();
|
||||
const queryRunner = dataSource.createQueryRunner();
|
||||
await queryRunner.connect();
|
||||
try {
|
||||
const sql = `SELECT PCEMPR.MATRICULA AS "id"
|
||||
,PCEMPR.NOME AS "name"
|
||||
,PCEMPR.CODUSUR AS "sellerId"
|
||||
,PCEMPR.CODFILIAL AS "storeId"
|
||||
,PCEMPR.EMAIL AS "email"
|
||||
,PCEMPR.DTDEMISSAO as "dataDesligamento"
|
||||
,PCEMPR.SITUACAO as "situacao"
|
||||
FROM PCEMPR
|
||||
WHERE PCEMPR.USUARIOBD = '${user.userName}'
|
||||
AND PCEMPR.SENHABD = CRYPT('${user.password.toUpperCase()}', PCEMPR.USUARIOBD) `;
|
||||
|
||||
|
||||
const users = await queryRunner.manager.query(sql);
|
||||
|
||||
if (users.length == 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const userDb = users[0];
|
||||
|
||||
if ( userDb.dataDesligamento !== null ) {
|
||||
throw new HttpException('Usuário desligado da empresa, login não permitido!', HttpStatus.FORBIDDEN);
|
||||
}
|
||||
|
||||
if ( userDb.situacao == 'I' ) {
|
||||
throw new HttpException('Usuário inativo, login não permitido!', HttpStatus.FORBIDDEN);
|
||||
}
|
||||
return userDb;
|
||||
} finally {
|
||||
await queryRunner.release();
|
||||
await dataSource.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
async resetPassword(user: any): Promise<any> {
|
||||
const dataSource = new DataSource(typeOrmConfig);
|
||||
await dataSource.initialize();
|
||||
const queryRunner = dataSource.createQueryRunner();
|
||||
await queryRunner.connect();
|
||||
await queryRunner.startTransaction();
|
||||
try {
|
||||
let sql =
|
||||
'SELECT PCUSUARI.CODUSUR as "sellerId" ' +
|
||||
' ,PCUSUARI.NOME as "name" ' +
|
||||
' ,PCUSUARI.EMAIL as "email" ' +
|
||||
' FROM PCUSUARI ' +
|
||||
` WHERE REGEXP_REPLACE(PCUSUARI.CPF, '[^0-9]', '') = REGEXP_REPLACE(:1, '[^0-9]', '') ` +
|
||||
` AND PCUSUARI.EMAIL = :2 `;
|
||||
|
||||
const users = await queryRunner.manager.query(sql, [
|
||||
user.document,
|
||||
user.email,
|
||||
]);
|
||||
|
||||
if (users.length == 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const guid = Guid.create();
|
||||
console.log(guid.toString());
|
||||
const password = guid.toString().substring(0, 8);
|
||||
const newPassword = md5(password).toUpperCase();
|
||||
console.log("Senha:" + newPassword)
|
||||
sql = `UPDATE PCUSUARI SET ` +
|
||||
` SENHALOGIN = :1 ` +
|
||||
`WHERE CODUSUR = :2`;
|
||||
await queryRunner.manager.query(sql, [newPassword, users[0].sellerId]);
|
||||
|
||||
const sqlEmail = `INSERT INTO CORRESPONDENCIAS ( CORRESPONDENCIA_ID, DTINCLUSAO, TITULO, MENSAGEM, EMAIL, DESTINATARIO )
|
||||
VALUES ( SEQ_CORRESPONDENCIAS.NEXTVAL, SYSDATE, 'Alteração de email - CoteLivia',
|
||||
'Sua senha para acesso ao portal COTELIVIA é ${password}', '${users[0].email}', '${users[0].email}' )`;
|
||||
await queryRunner.manager.query(sqlEmail);
|
||||
await queryRunner.commitTransaction();
|
||||
|
||||
const userDb = users[0];
|
||||
return userDb;
|
||||
} catch (error) {
|
||||
await queryRunner.rollbackTransaction();
|
||||
console.log(error);
|
||||
throw new Error(error);
|
||||
}
|
||||
finally {
|
||||
await queryRunner.release();
|
||||
await dataSource.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async changePassword(user: any): Promise<any> {
|
||||
const dataSource = new DataSource(typeOrmConfig);
|
||||
await dataSource.initialize();
|
||||
const queryRunner = dataSource.createQueryRunner();
|
||||
await queryRunner.connect();
|
||||
await queryRunner.startTransaction();
|
||||
console.log(JSON.stringify(user));
|
||||
try {
|
||||
let sql =
|
||||
'SELECT PCUSUARI.CODUSUR as "sellerId" ' +
|
||||
' ,PCUSUARI.NOME as "name" ' +
|
||||
' ,PCUSUARI.EMAIL as "email" ' +
|
||||
' FROM PCUSUARI ' +
|
||||
` WHERE PCUSUARI.CODUSUR = :1` +
|
||||
` AND PCUSUARI.SENHALOGIN = :2 `;
|
||||
|
||||
const users = await queryRunner.manager.query(sql, [
|
||||
user.id,
|
||||
md5(user.password).toUpperCase(),
|
||||
]);
|
||||
|
||||
if (users.length == 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
sql = `UPDATE PCUSUARI SET ` +
|
||||
` SENHALOGIN = :1 ` +
|
||||
`WHERE CODUSUR = :2`;
|
||||
await queryRunner.manager.query(sql, [md5(user.newPassword).toUpperCase(), users[0].sellerId]);
|
||||
|
||||
await queryRunner.commitTransaction();
|
||||
|
||||
const userDb = users[0];
|
||||
return userDb;
|
||||
} catch (error) {
|
||||
await queryRunner.rollbackTransaction();
|
||||
console.log(error);
|
||||
throw new Error(error);
|
||||
}
|
||||
finally {
|
||||
await queryRunner.release();
|
||||
await dataSource.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user