An error occurred while loading the file. Please try again.
-
Tushar authoredUnverified057c4126
import { Injectable } from '@nestjs/common';
import * as CryptoJS from 'crypto';
import { dbConnector } from './db/db.module';
import { ConnectionPool } from 'mssql';
@Injectable()
export class AppService {
dbConnection: ConnectionPool = null;
constructor(private conn: dbConnector) {
console.log(
process.env.MSSQL_USER,
process.env.MSSQL_SERVER,
process.env.MSSQL_DATABASE,
process.env.MSSQL_PASSWORD,
process.env.MSSQL_PORT,
);
this.dbConnection = conn.getConnectionPool(
process.env.MSSQL_USER,
process.env.MSSQL_SERVER,
process.env.MSSQL_DATABASE,
process.env.MSSQL_PASSWORD,
parseInt(process.env.MSSQL_PORT),
);
}
// async mysqlCallStoredProcedure(msg: string) {
//returns a promise that resolves to a result set on success
// const execSql = (statement) => {
// const p = new Promise((res, rej) => {
// this.conn.query(statement, function (err, result) {
// if (err) rej(err);
// else res(result);
// });
// });
// return p;
// };
// const res = await execSql('call getTest()');
// return res;
// }
async mssqlCallStoredProcedure(username: string) {
//returns a promise that resolves to a result set on success
const db = await this.dbConnection.connect();
const res = await db.query(`EXEC get_user @Username = N'${username}'`);
console.log(res);
return { pass: res['recordset'][0]['Password'] };
}
parseQueryResponse(res) {
const nres = [];
res.recordset.forEach((element) => {
delete element.Password;
delete element.IsActive;
delete element.CreatedBy;
delete element.LastModifiedBy;
delete element.LastModifiedOn;
delete element.UserKey;
delete element.Code;
delete element.UserType;
delete element.CreatedOn;
delete element.PasswordIsModified;
const [firstName, lastName] = element.Name.split(' ');
element.FirstName = firstName;
element.lastName = lastName;
const lowerCase = (str) => str[0].toLowerCase() + str.slice(1);
const nelement = Object.fromEntries(
Object.entries(element).map(([k, v]) => [lowerCase(k), v]),
);
nelement.roles = ['USER'];
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
nres.push(nelement);
});
return nres;
}
async getUsers(search: string, first: number, max: number) {
const db = await this.dbConnection.connect();
const res = this.parseQueryResponse(
await db.query(`SELECT * FROM upsmfac_casa.dbo.Master_user`),
);
return res;
}
async getUsersCount() {
const db = await this.dbConnection.connect();
const res = await db.query(
`SELECT COUNT(UserKey) as count FROM Master_user`,
);
return res.recordset[0].count;
}
async getUserById(username: string) {
const db = await this.dbConnection.connect();
const res = this.parseQueryResponse(
await db.query(
`SELECT * FROM upsmfac_casa.dbo.Master_user where username = N'${username}'`,
),
);
return res[0];
}
async getUserCredentials(username: string) {
const db = await this.dbConnection.connect();
const res = await db.query(
`SELECT * FROM upsmfac_casa.dbo.Master_user where username = N'${username}'`,
);
const saltRounds = 1000;
const cred_res = [];
res.recordset.forEach((ele) => {
// const salt = bcrypt.genSaltSync(saltRounds);
const salt = CryptoJS.randomBytes(32);
const hash = CryptoJS.pbkdf2Sync(
ele.Password,
salt,
saltRounds,
64,
'sha256',
);
// const hash = bcrypt.hashSync(ele.Password, salt);
cred_res.push({
value: hash.toString('base64'),
salt: salt.toString('base64'),
algorithm: 'pbkdf2-sha256',
iterations: saltRounds,
type: 'password',
});
});
return cred_res[0];
}
async getTutorById(id: string) {
const db = await this.dbConnection.connect();
const res = await db.query(
`Select * from upsmfac_casa.dbo.Master_Tutor_Basic_Info where TutorKey='${id}'`,
);
return res.recordset[0];
}
async getStudentById(id: string) {
const db = await this.dbConnection.connect();
141142143144145146147
const res = await db.query(
`Select * from upsmfac_casa.dbo.Master_StudentProfile where StudentProfileKey='${id}'`,
);
return res.recordset[0];
}
}