비밀번호 변경 기능 개선 및 검증 강화
- 비밀번호 변경 페이지에 확인 Dialog 추가 (로그인/거래취소) - 비밀번호 에러 코드별 상세 메시지 처리 * INVALID_PASSWORD, UPDATE_PASSWORD_FAIL, PREVIOUS_PASSWORD * MERCHANT_INFO_MATCH_PASSWORD, PASSWORD_LENGHT * DISALLOWED_CHARACTERS_INCLUDED, DISALLOWED_WHITE_SPACE * NOT_ENOUGH_COMPLEXITY, REPEATED_CHARACTER_SEQUENCE * COMMON_PASSWORD_DETECTED - 비밀번호 입력 검증 로직 통합 (validatePassword) - 이메일/전화번호 마스킹 기능 추가 - 사용자 추가 페이지 에러 처리 개선 - 다국어 메시지 추가 (한국어/영어) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
41
src/shared/lib/masking.ts
Normal file
41
src/shared/lib/masking.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* 전화번호 마스킹 함수
|
||||
* @param phoneNumber - 마스킹할 전화번호 (예: "01012345678")
|
||||
* @returns 마스킹된 전화번호 (예: "0101234****")
|
||||
*/
|
||||
export const maskPhoneNumber = (phoneNumber: string): string => {
|
||||
const cleaned = phoneNumber.replace(/[^0-9]/g, '');
|
||||
|
||||
if (cleaned.length === 11 && cleaned.startsWith('010')) {
|
||||
const prefix = cleaned.substring(0, 7);
|
||||
return `${prefix}****`;
|
||||
}
|
||||
|
||||
return phoneNumber;
|
||||
};
|
||||
|
||||
/**
|
||||
* 이메일 마스킹 함수
|
||||
* @param email - 마스킹할 이메일 (예: "hanbyeol@gmail.com")
|
||||
* @returns 마스킹된 이메일 (예: "ha******@gmail.com")
|
||||
*/
|
||||
export const maskEmail = (email: string): string => {
|
||||
const atIndex = email.indexOf('@');
|
||||
|
||||
if (atIndex === -1) {
|
||||
return email;
|
||||
}
|
||||
|
||||
const localPart = email.substring(0, atIndex);
|
||||
const domainPart = email.substring(atIndex);
|
||||
|
||||
if (localPart.length <= 2) {
|
||||
return email;
|
||||
}
|
||||
|
||||
const visiblePart = localPart.substring(0, 2);
|
||||
const maskedCount = localPart.length - 2;
|
||||
const maskedPart = '*'.repeat(maskedCount);
|
||||
|
||||
return `${visiblePart}${maskedPart}${domainPart}`;
|
||||
};
|
||||
Reference in New Issue
Block a user