오늘은 딱히 막히는 것 없이 무난한 하루였다. 정합성 확인한다고 여기저기 코드 구조를 정돈하면서 재사용성과 효율성을 올렸다. 그 외에는 자잘한 CORS와 Cookie 확인 안되는 이슈들을 해결했다.
회원 가입, 정보 수정, 삭제 같은 기능들이 별거 아닌 것 같아도 손볼게 참 많은 것 같다.
일단 항목별로 재사용할 기능을 나눈다. 이메일은 이메일대로, 닉네임은 닉네임대로.
비동기로 서버에 확인할 내용도 따로 빼둔다.
충돌 확인하는게 꼭 필요할 때가 있고 있으면 안될 때가 있더라.
export const isValidEmail = async (email) => {
if (!email) {
return '이메일을 입력해주세요.';
} else if (!/\S+@\S+\.\S+/.test(email)) {
return '올바른 이메일 형식이 아닙니다.';
} else if (!(await isUniqueEmail(email))) {
return '중복된 이메일입니다.';
} else {
return '';
}
};
그래서 이렇게 함수를 나눴는데 이거도 별로 마음에 안든다.
2번 수정해야 되는 부분이 특히나. 검사 항목별로 또 잘게 쪼개야되나?
export const isValidOnlyEmail = async (email) => {
if (!email) {
return '이메일을 입력해주세요.';
} else if (!/\S+@\S+\.\S+/.test(email)) {
return '올바른 이메일 형식이 아닙니다.';
} else {
return '';
}
};
이렇게 나눈 기능들을 한 번에 확인할 때 아래 코드를 사용한다.
지금은 회원 가입이라 이렇게 되어있고 회원 정보 수정 등 확인할 항목이 다르면 다른 폼으로 검사한다.
export const isValidSignUp = async (values) => {
const validResult = {
email: await isValidEmail(values.email),
nickname: await isValidNickname(values.nickname),
password: isValidPassword(values.password),
confirm: isValidPasswordConfirm(values.password, values.confirm),
};
return validResult;
};
프로젝트 팀원의 에러 로그를 가져왔다.
sameSite: 'None',
secure: true
sameSite: 'Strict'
exposedHeaders: 'isLogin'