added otp limiter

This commit is contained in:
unknown
2024-08-21 11:19:19 +03:00
parent 72679fcfe8
commit 2581137f8b
2 changed files with 10 additions and 4 deletions

View File

@ -20,6 +20,7 @@ import { UserEntity } from '../../../libs/common/src/modules/user/entities/user.
import * as argon2 from 'argon2';
import { differenceInSeconds } from '@app/common/helper/differenceInSeconds';
import { LessThan, MoreThan } from 'typeorm';
import { ConfigService } from '@nestjs/config';
@Injectable()
export class UserAuthService {
@ -32,6 +33,7 @@ export class UserAuthService {
private readonly emailService: EmailService,
private readonly userRoleRepository: UserRoleRepository,
private readonly roleTypeRepository: RoleTypeRepository,
private readonly configService: ConfigService,
) {}
async signUp(userSignUpDto: UserSignUpDto): Promise<UserEntity> {
@ -139,8 +141,10 @@ export class UserAuthService {
}
async generateOTP(data: UserOtpDto): Promise<string> {
const threeDaysAgo = new Date();
threeDaysAgo.setDate(threeDaysAgo.getDate() - 3);
const otpLimiter = new Date();
otpLimiter.setDate(
otpLimiter.getDate() - this.configService.get<number>('OTP_LIMITER'),
);
const userExists = await this.userRepository.exists({
where: {
region: data.regionUuid
@ -159,14 +163,14 @@ export class UserAuthService {
await this.otpRepository.delete({
email: data.email,
type: data.type,
createdAt: LessThan(threeDaysAgo),
createdAt: LessThan(otpLimiter),
});
const countOfOtp = await this.otpRepository.count({
withDeleted: true,
where: {
email: data.email,
type: data.type,
createdAt: MoreThan(threeDaysAgo),
createdAt: MoreThan(otpLimiter),
},
});
const lastOtp = await this.otpRepository.findOne({