You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
3.0 KiB
TypeScript
89 lines
3.0 KiB
TypeScript
import { BadRequestException, Logger } from "@nestjs/common";
|
|
import { EntityRepository, ILike, Like, Repository } from "typeorm";
|
|
import { TempSignUpDto } from "./dto/temp-sign-up.dto";
|
|
import { Pcduser } from "./pcduser.entity";
|
|
import * as bcrypt from 'bcrypt';
|
|
import { AuthCreadentialsDto } from "./dto/auth-credentials.dto";
|
|
import { PcduserDto } from "src/auth/dto/pcd-user.dto";
|
|
|
|
@EntityRepository(Pcduser)
|
|
export class PcduserRepository extends Repository<Pcduser>{
|
|
private logger = new Logger('Pcduser Repo'); // for logging
|
|
async updateRefreshToken(userId: string, refreshToken: string) {
|
|
const user = await this.findOne({ userId: userId });
|
|
user.refreshtoken = refreshToken;
|
|
this.save(user);
|
|
}
|
|
|
|
async signUp(authCredentials: TempSignUpDto, customerMobileNo, memberNo?, bankId?, secuLevel?): Promise<any> {
|
|
|
|
const salt = await bcrypt.genSalt();
|
|
const tsalt = await bcrypt.genSalt();
|
|
const user = new Pcduser();
|
|
// user.userId = authCredentials.userId;
|
|
let maxCode: number = 10001;
|
|
const maxRow: PcduserDto = await this.findOne({
|
|
where: { userId: Like('1%') },
|
|
order: {
|
|
"userId": "DESC"
|
|
}
|
|
});
|
|
|
|
if (maxRow) {
|
|
maxCode = parseInt(maxRow.userId) + 1;
|
|
}
|
|
if (!customerMobileNo) {
|
|
user.status = 'V';
|
|
}
|
|
else {
|
|
user.status = 'N';
|
|
user.mobileNumber = customerMobileNo;
|
|
}
|
|
user.userId = maxCode.toString();
|
|
user.userName = authCredentials.username;
|
|
|
|
user.email = authCredentials.email;
|
|
user.createdBy = "SYSTEM";
|
|
user.modifiedBy = "SYSTEM";
|
|
user.groupOrUser = 'U';
|
|
|
|
user.secuLevel = secuLevel;
|
|
user.salt = salt;
|
|
user.pass = await this.hashPassword(authCredentials.password, salt);
|
|
user.tSalt = tsalt;
|
|
user.tPass = await this.hashPassword(authCredentials.tpassword, tsalt);
|
|
user.bankId = bankId;
|
|
try {
|
|
return await user.save();
|
|
} catch (error) {
|
|
// if(error.code==23505) not working in orcale
|
|
throw new BadRequestException(error.message);
|
|
}
|
|
}
|
|
|
|
|
|
async getEagerColumns(): Promise<string[]> {
|
|
/*
|
|
For getting Eager true columns having Many to One relations.
|
|
We need to remove the eager columns before insertions or updations or it will not allow to save data (But save message will show, but data not updated)
|
|
*/
|
|
const COLUMNS: string[] = [];
|
|
for (let columnProperty of this.metadata.eagerRelations) {
|
|
COLUMNS.push(columnProperty.propertyName);
|
|
}
|
|
return COLUMNS;
|
|
}
|
|
|
|
|
|
|
|
async encryptPassword(password: string, salt: string): Promise<string> {
|
|
return await this.hashPassword(password, salt);
|
|
}
|
|
|
|
|
|
|
|
private async hashPassword(password: string, salt: string): Promise<string> {
|
|
return await bcrypt.hash(password, salt);
|
|
}
|
|
|
|
} |