TIL
20240904 본캠프 38일차 TIL
juno0432
2024. 9. 6. 01:44
본캠프 38일차 내용 간단요약
- 09:00 ~ 10:00 : 코드카타
- 10:00 ~ 11:00 : 회의
- 11:00 ~ 12:00 : 프로젝트 리팩토링
- 12:00 ~ 13:00 : 점심시간
- 13:00 ~ 18:00 : 프로젝트 구현 및 테스트 준비 및 튜터님 서면 피드백 수정
- 18:00 ~ 19:00 : 저녁시간
- 19:00 ~ 21:00 : 프로젝트 테스트
오늘 해야할 일 ✔️ 🔺 ❌
✔️ 프로젝트 구현 마무리
✔️ 프로젝트 테스트
회의
더보기
회의안건
- 튜터님 서면 피드백 관련
- PR 체크
- 프로필 조회 관련 설계 문제
회의 내용
- api 명세에 상태코드 추가, 포스트와 댓글에 soft-delete처리 관련 회의
- PR을 확인하며 서로 리뷰하는 시간을 가짐
- 프로필 조회에서 본인일 경우 모든 정보를, 본인이 아닐 경우 요약된 정보만 출력하게 됨, 어떻게 구현할것인가? dto 설계를 두개로 하면 api도 두개가 된다, responseDto의 생성자만 다르게 받으면 api 하나로 구현가능하다.
의결사항
- 튜터님 서면 피드백에따라 API명세는 오후중 수정 및 포스트와 댓글에 softDelete로 구현하기로함
- PR을 확인하며 누락된 부분인 `본인이 작성한 게시물과 댓글에 좋아요를 남길 수 없습니다` 문제를 식별.
- user를 식별하여 dto 생성자를 다르게하여 출력하게 한다.
프로젝트 구현
더보기
에러코드 추가
토큰없음 예외처리를 커스텀으로 보강
TOKEN_INVALID(401, "토큰이 유효하지 않습니다."),
FOLLOW_NOT_FOUND(404, "팔로우 관계가 존재하지 않습니다."),
PASSWORD_NOT_MATCH(404, "비밀번호가 일치하지 않습니다"),
ALREADY_USER_EXIST(409, "이미 존재하는 회원입니다");
유저 삭제 시 비밀번호 수정 및 검증로직을 추가하였다
if (!passwordEncoder.matches(request.getPassword(), user.getPassword())) {
throw new ApplicationException(ErrorCode.PASSWORD_NOT_MATCH);
}
UserService 메서드 분리
servlet에서 받아온 user아이디와 입력받은 suerid가 동일한지 check를 하는 로직이다.
//servlet에서 받아온 user아이디와 입력받은 userid 가 동일한지, check를 하는 로직입니다.
private User userCheck(HttpServletRequest request, Long userId) {
Long currentUserId = getUserId(request);
User currentUser = userRepository.findById(currentUserId)
.orElseThrow(() -> new ApplicationException(ErrorCode.USER_NOT_FOUND));
if(currentUser.isEnabled())
{
throw new ApplicationException(ErrorCode.USER_NOT_FOUND);
}
if (!userId.equals(currentUserId)) {
throw new ApplicationException(ErrorCode.USER_FORBIDDEN);
}
return userRepository.findById(userId)
.orElseThrow(() -> new ApplicationException(ErrorCode.USER_NOT_FOUND));
}
프로젝트 테스트
더보기
프로젝트 테스트를 팀원들이랑 하면서 문제사항을 점검했다
follow : follow 중복 추가 문제 발생
post : token에서 받은 user와 삭제할 게시물의 userid가 다른경우
comment : url변경 및 soft delete를 구현했다
commentLike : pathvariable 수정
필요를 했다.
오늘의 회고 & 12시간 몰입했는가?
구현이 완료되어가니 살짝 집중력이 떨어지는 느낌...!