refactor: 비밀번호 검증 규칙 통일
- 비밀번호 규칙을 8자 + 대소문자/숫자/특수문자로 통일 - constants.ts와 actions.ts의 검증 로직 일치
This commit is contained in:
@@ -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 - 사용자 비밀번호
|
||||
|
||||
Reference in New Issue
Block a user