이메일과 비밀번호 형식을 제한한다.
회원가입, 로그인, 보호 API는 하나의 인증 파이프라인이다
Auth API는 로그인 폼 구현이 아니라 입력 검증, 비밀번호 해시, 토큰 발급, Guard 검증이 이어지는 보안 경계다.
평문 저장 없이 bcrypt 해시만 남긴다.
sub, email 같은 식별 정보만 payload에 둔다.
요청마다 payload를 사용자 컨텍스트로 복원한다.
req.user가 없으면 프로젝트 API에 들어오지 못한다.
| 구성 요소 | 책임 | 실패하면 | 검증 포인트 |
|---|---|---|---|
| AuthService가입/로그인 처리 | 사용자 생성, 비밀번호 비교, 토큰 발급 | 중복 이메일, 해시 누락, 잘못된 토큰 | 응답에 passwordHash가 없는가 |
| JwtStrategy토큰 복원 | payload를 request user로 변환 | 보호 API가 익명 요청처럼 동작 | 만료/위조 토큰이 401인가 |
| AuthGuard접근 제한 | 컨트롤러 진입 전 인증 강제 | 프로젝트/파일 API가 노출됨 | profile, projects가 토큰 없이는 실패하는가 |
핵심: signup → login → JWT → guard → protected API가 같은 사용자 식별자를 유지해야 인증 경계가 맞다.