diff --git a/apps/server/src/codef/strategies/request-reset-password/mapper.ts b/apps/server/src/codef/strategies/request-reset-password/mapper.ts index 015eea6..e7aa1c0 100644 --- a/apps/server/src/codef/strategies/request-reset-password/mapper.ts +++ b/apps/server/src/codef/strategies/request-reset-password/mapper.ts @@ -97,7 +97,18 @@ export class Mapper { }; } } else { - throw new Error(); + if (response.data.resRegistrationStatus == '0') { + return { + type: 'PasswordChangeFailed', + userId: response.data.resLoginId, + result: response.data.resResultDesc, + }; + } else { + return { + type: 'PasswordChanged', + userId: response.data.resLoginId, + }; + } } } } diff --git a/apps/server/src/codef/types/reset-password/reset-password.response.ts b/apps/server/src/codef/types/reset-password/reset-password.response.ts index 348d1f2..955cc40 100644 --- a/apps/server/src/codef/types/reset-password/reset-password.response.ts +++ b/apps/server/src/codef/types/reset-password/reset-password.response.ts @@ -35,7 +35,9 @@ export type CodefSMSResponse = t.TypeOf; export const CodefPasswordChangedResponse = CodefResponse( t.type({ - userId: t.string, + resLoginId: t.string, + resRegistrationStatus: t.string, + resResultDesc: t.string, }) ); diff --git a/apps/server/src/nip/strategies/resetPassword/response.ts b/apps/server/src/nip/strategies/resetPassword/response.ts index 9d9adb2..55bcf36 100644 --- a/apps/server/src/nip/strategies/resetPassword/response.ts +++ b/apps/server/src/nip/strategies/resetPassword/response.ts @@ -14,12 +14,19 @@ export type NipSecureNoResponse = NipResetPasswordBaseResponse<'SecureNo'> & { export type NipSMSResponse = NipResetPasswordBaseResponse<'SMS'>; -export type PasswordChangedResponse = - NipResetPasswordBaseResponse<'PasswordChanged'> & { - userId: string; - }; +export type NipPasswordChangedResponse = { + type: 'PasswordChanged'; + userId: string; +}; + +export type NipPasswordChangeFailedResponse = { + type: 'PasswordChangeFailed'; + userId?: string; + result: string; +}; export type NipResetPasswordResponse = | NipSecureNoResponse | NipSMSResponse - | PasswordChangedResponse; + | NipPasswordChangedResponse + | NipPasswordChangeFailedResponse; diff --git a/apps/server/src/password-reset/states/SMSState.ts b/apps/server/src/password-reset/states/SMSState.ts index f2ffff1..fa3837a 100644 --- a/apps/server/src/password-reset/states/SMSState.ts +++ b/apps/server/src/password-reset/states/SMSState.ts @@ -3,6 +3,8 @@ import { Injectable } from '@nestjs/common'; import { NipService } from '../../nip/nip.service'; import { ResetPasswordRequest } from '../types/reset-password.request'; +import { DomainException } from '../../exception/domain-exception'; +import { ErrorCode } from '../../exception/error'; @Injectable() export class SMSState extends PasswordResetState { @@ -31,6 +33,9 @@ export class SMSState extends PasswordResetState { twoWayInfo: this.context.data.twoWayInfo, }); + if (response.type == 'PasswordChangeFailed') { + throw new DomainException(ErrorCode.CODEF_ERROR, response.result); + } return true; } }