feat(pos): add update password functionality with DTO and service method

This commit is contained in:
2026-05-24 10:44:47 +03:30
parent 6f65123816
commit b53b7d3ed3
3 changed files with 43 additions and 1 deletions
@@ -0,0 +1,8 @@
import { ApiProperty } from '@nestjs/swagger'
import { IsString } from 'class-validator'
export class UpdatePosAccountPasswordDto {
@IsString()
@ApiProperty({ required: true })
password: string
}
+11 -1
View File
@@ -1,12 +1,13 @@
import { PosInfo } from '@/common/decorators/posInfo.decorator'
import { TokenAccount } from '@/common/decorators/tokenInfo.decorator'
import { Controller, Get, Res } from '@nestjs/common'
import { Body, Controller, Get, Put, Res } from '@nestjs/common'
import { ApiTags } from '@nestjs/swagger'
import type {
PosServiceGetAccessibleResponseDto,
PosServiceGetInfoResponseDto,
PosServiceGetMeResponseDto,
} from './dto/pos-response.dto'
import { UpdatePosAccountPasswordDto } from './dto/update-password-request.dto'
import { PosService } from './pos.service'
@ApiTags('Pos')
@@ -48,4 +49,13 @@ export class PosController {
): Promise<PosServiceGetMeResponseDto> {
return await this.service.getMe(account_id, pos_id)
}
@Put('update-password')
async updatePassword(
@TokenAccount('userId') consumerId: string,
@TokenAccount('account_id') accountId: string,
@Body() data: UpdatePosAccountPasswordDto,
) {
return this.service.updatePassword(consumerId, accountId, data)
}
}
+24
View File
@@ -1,4 +1,5 @@
import { QUERY_CONSTANTS } from '@/common/queryConstants'
import { PasswordUtil } from '@/common/utils'
import consumer_mappersUtil from '@/common/utils/mappers/consumer_mappers.util'
import { RedisKeyMaker } from '@/common/utils/redisKeyMaker'
import { ConsumerStatus } from '@/generated/prisma/enums'
@@ -6,6 +7,7 @@ import { PrismaService } from '@/prisma/prisma.service'
import { RedisService } from '@/redis/redis.service'
import { Injectable } from '@nestjs/common'
import { ResponseMapper } from 'common/response/response-mapper'
import { UpdatePosAccountPasswordDto } from './dto/update-password-request.dto'
@Injectable()
export class PosService {
@@ -210,4 +212,26 @@ export class PosService {
this.meCacheTtlSeconds,
)
}
async updatePassword(
consumer_id: string,
accountId: string,
data: UpdatePosAccountPasswordDto,
) {
const consumer = await this.prisma.consumerAccount.update({
where: {
id: accountId,
consumer_id,
},
data: {
account: {
update: {
password: await PasswordUtil.hash(data.password),
},
},
},
})
return ResponseMapper.update(consumer)
}
}