refactor: 비밀번호 검증 규칙 통일

- 비밀번호 규칙을 8자 + 대소문자/숫자/특수문자로 통일
- constants.ts와 actions.ts의 검증 로직 일치
This commit is contained in:
2026-02-04 09:35:15 +09:00
parent a7bcbeda72
commit 7500b963c0
2 changed files with 42 additions and 8 deletions

View File

@@ -46,15 +46,31 @@ function extractAuthData(formData: FormData): AuthFormData {
* @returns AuthError | null - 에러가 있으면 에러 객체, 없으면 null
*/
function validatePassword(password: string): AuthError | null {
// 1. 최소 길이 체크 (6자 이상)
if (password.length < 6) {
// 1. 최소 길이 체크 (8자 이상)
if (password.length < 8) {
return {
message: AUTH_ERROR_MESSAGES.PASSWORD_TOO_SHORT,
type: "validation",
};
}
// 2. 자 포함 여부
// 2. 대문자 포함 여부
if (!/[A-Z]/.test(password)) {
return {
message: AUTH_ERROR_MESSAGES.PASSWORD_TOO_WEAK,
type: "validation",
};
}
// 3. 소문자 포함 여부
if (!/[a-z]/.test(password)) {
return {
message: AUTH_ERROR_MESSAGES.PASSWORD_TOO_WEAK,
type: "validation",
};
}
// 4. 숫자 포함 여부
if (!/[0-9]/.test(password)) {
return {
message: AUTH_ERROR_MESSAGES.PASSWORD_TOO_WEAK,
@@ -62,7 +78,7 @@ function validatePassword(password: string): AuthError | null {
};
}
// 3. 특수문자 포함 여부
// 5. 특수문자 포함 여부
if (!/[!@#$%^&*(),.?":{}|<>]/.test(password)) {
return {
message: AUTH_ERROR_MESSAGES.PASSWORD_TOO_WEAK,
@@ -82,7 +98,7 @@ function validatePassword(password: string): AuthError | null {
* 검증 항목:
* 1. 빈 값 체크 - 이메일 또는 비밀번호가 비어있는지 확인
* 2. 이메일 형식 - '@' 포함 여부로 간단한 형식 검증
* 3. 비밀번호 길이 - 최소 6자 이상인지 확인 (Supabase 기본 요구사항)
* 3. 비밀번호 강도 - 8자 이상, 대소문자/숫자/특수문자 포함 확인
*
* @param email - 사용자 이메일
* @param password - 사용자 비밀번호