구현 방법

  1. 초창기에 Server Actions로 작업했다가 바꿈.
  2. BE에서 User 객체(entity)를 Client와 Mover로 나눠 작업했기 때문에, 처음에 ClientSignInForm과 MoverSignInForm을 나눠 만들었다가, 추후 userType 속성을 부여해 SignInForm으로 컴포넌트를 합침.
  3. [경로] 팀원이 Router Guard 파일 따로 만들어서 작업. 경로 충돌 문제 있었음. (담당 팀원이 문제 해결.)

문제 및 해결책 (+ 소셜 로그인)

유효성 검사 처리 방식

// 로그인
if (customError?.body.message) {
  if (message === "사용자를 찾을 수 없습니다.") {
     setError("email", {
        type: "server",
        message: message,
     });
  } else if (message === "비밀번호가 일치하지 않습니다.") {
     setError("password", {
        type: "server",
        message: message,
     });
  }
  
// 회원가입
const customError = error as AuthFetchError;

if (customError?.status) {
Object.entries(customError.body.data!).forEach(([key, message]) => {
   setError(key as keyof SignUpFormValues, {
      type: "server",
      message: String(message),
   });