diff --git a/src/modules/pos/dto/update-password-request.dto.ts b/src/modules/pos/dto/update-password-request.dto.ts index babc15e..53cee61 100644 --- a/src/modules/pos/dto/update-password-request.dto.ts +++ b/src/modules/pos/dto/update-password-request.dto.ts @@ -1,8 +1,13 @@ import { ApiProperty } from '@nestjs/swagger' -import { IsString } from 'class-validator' +import { IsString, Length } from 'class-validator' export class UpdatePosAccountPasswordDto { - @IsString() @ApiProperty({ required: true }) + @IsString() + currentPassword: string + + @ApiProperty({ required: true }) + @IsString() + @Length(6, 32) password: string } diff --git a/src/modules/pos/pos.service.ts b/src/modules/pos/pos.service.ts index aaf4db6..117cba6 100644 --- a/src/modules/pos/pos.service.ts +++ b/src/modules/pos/pos.service.ts @@ -5,7 +5,7 @@ import { RedisKeyMaker } from '@/common/utils/redisKeyMaker' import { ConsumerStatus } from '@/generated/prisma/enums' import { PrismaService } from '@/prisma/prisma.service' import { RedisService } from '@/redis/redis.service' -import { Injectable } from '@nestjs/common' +import { BadRequestException, Injectable } from '@nestjs/common' import { ResponseMapper } from 'common/response/response-mapper' import { UpdatePosAccountPasswordDto } from './dto/update-password-request.dto' @@ -218,7 +218,29 @@ export class PosService { accountId: string, data: UpdatePosAccountPasswordDto, ) { - const consumer = await this.prisma.consumerAccount.update({ + const currentCustomerAccount = await this.prisma.consumerAccount.findUniqueOrThrow({ + where: { + id: accountId, + consumer_id, + }, + select: { + account: { + select: { + password: true, + }, + }, + }, + }) + + const isCurrentPasswordValid = await PasswordUtil.compare( + data.currentPassword, + currentCustomerAccount.account.password, + ) + if (!isCurrentPasswordValid) { + throw new BadRequestException('رمز عبور فعلی اشتباه است') + } + + const consumerAccount = await this.prisma.consumerAccount.update({ where: { id: accountId, consumer_id, @@ -232,6 +254,6 @@ export class PosService { }, }) - return ResponseMapper.update(consumer) + return ResponseMapper.update(consumerAccount) } }