Spring Projcect 63

회원 유효성 검증

ExceptionHandler 만들기 서비스 로직을 들어가기 전에 회원이 정보가 유효하지 않을 때 예외를 터뜨린다. methodArgumentNotValidHandlerCustomException() MethodArgumentNotValidException를 처리해주는 핸들러가 있어야한다. 이를 만들어주지 않으면? 에러의 메시지가 다음과 같이 제대로 안 나온다. @Slf4j @RestControllerAdvice public class CustomExceptionHandler { @ExceptionHandler(MemberException.class) protected ResponseEntity memberHandlerCustomException( MemberException e) { MemberErro..

회원 수정 - 이미지 업로드 API

AWS S3(Amazon S3, Simple Storage Service)란? 아마존 웹 서비스에서 제공하는 온라인 스토리지 웹 서비스를 말한다. 같은 팀원이 S3 버킷을 생성했다. AWS에서 IAM key도 생성 완료 build.gradle에 디펜던시를 추가한다. implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' properties에도 다음과 같은 설정이 필요하다. 최대로 올릴 수 있는 파일의 용량을 뜻한다. spring.servlet.multipart.max-file-size= 100MB spring.servlet.multipart.max-request-size= 100MB # ??? S3 bucket r..

회원 비밀번호 초기화 API

service uuid 오류, 비밀번호와 비밀번호 확인이 다른 경우, 유효기간이 지난 경우는 초기화할 수 없도록 예외처리한다. 새로운 비밀번호는 인코딩해서 데이터베이스에 저장한다. @Override public void resetPassword(String uuid, ResetPasswordInput input) { Optional optionalMember = memberRepository.findByResetPasswordKey(uuid); if (!optionalMember.isPresent()) { throw new MemberException(RESET_PASSWORD_KEY_NOT_EXIST); } if (!input.getNewPassword().equals(input.getConfirmNe..

회원 탈퇴 API

Input @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor public class WithdrawMemberInput { private String password; } Service memberId, email, status, deleteDt를 제외하고 나머지는 모두 null 로 변경한다. 같은 이메일로는 재가입 불가능하다. @Override public void withdraw(String email, String password) { Optional optionalMember = memberRepository.findByEmail(email); if (!optionalMember.isPresent()) { throw new Membe..

회원 이메일 인증 API

MailComponent JavaMailSender를 이용하기 위한 Component 클래스를 만든다. @Component 애너테이션을 붙이지 않으면 아래와 같은 오류가 난다. 따로 클래스를 만들고 빈 등록을 꼭 해줘야한다. Parameter 3 of constructor in com.rezero.inandout.member.service.MemberServiceImpl required a bean of type 'com.rezero.inandout.member.model.MailComponent' that could not be found. mail Mime: 단순 텍스트 뿐만 아니라 다른 여러 바이너리 파일을 메일에 첨부할 때 쓰인다. MimeMessage는 디테일하게 메일 전송 가능 SimpleMa..

회원 가입 API

error code 비밀번호 정책, 가입 요구사항을 만족하기 위한 에러코드를 만든다. @Getter @AllArgsConstructor public enum MemberErrorCode { /** * 회원가입 - 이미 존재하는 이메일, 휴대폰, 닉네임 오류 */ EMAIL_EXIST("이미 가입된 이메일입니다."), PHONE_EXIST("동일한 휴대폰 번호가 존재합니다. 다른 번호를 입력하세요."), NICKNAME_EXIST("동일한 닉네임이 존재합니다. 다른 닉네임을 입력하세요"), /** * 회원가입 - 비밀번호 오류 */ PASSWORD_LENGTH_MORE_THAN_8("비밀번호는 8자리 이상이어야합니다.(영문자, 숫자, 특수문자를 각각 1글자 이상 포함)"), PASSWORD_NOT_CONT..

회원 로그아웃 API

오류: : "JpaAuditingHandler"빈 생성 오류 Back-end 브랜치에서 User-logout 브랜치를 새로 판다. 새로 만들었으니까 test 를 모두 실행한다. 그런데 컨트롤러 테스트(수입 지출 회원)에서만 모두 오류가 났다. BeanCreationException: Error creating bean with name 'jpaAuditingHandler': Cannot resolve reference to bean 'jpaMappingContext' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean w..

회원 예외 처리 MemberErrorCode, ExceptionHandler

MemberErrorCode @Getter @AllArgsConstructor public enum MemberErrorCode { /** * 회원가입 - 이미 존재하는 이메일, 휴대폰, 닉네임 오류 */ EXIST_EMAIL("이미 가입된 이메일입니다."), EXIST_PHONE("동일한 휴대폰 번호가 존재합니다. 다른 번호를 입력하세요."), EXIST_NICKNAME("동일한 닉네임이 존재합니다. 다른 닉네임을 입력하세요"), /** * 회원가입 - 비밀번호 오류 */ PASSWORD_LENGTH_MORE_THAN_8("비밀번호는 8자리 이상이어야합니다.(영문자, 숫자, 특수문자를 각각 1글자 이상 포함)"), PASSWORD_NOT_CONTAIN_DIGIT("비밀번호는 숫자를 한 글자 이상 포함해..

회원 정보 조회 및 수정 API

UpdateMemberInput @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor public class UpdateMemberInput { private String nickName; private String phone; private LocalDate birth; private String address; private String gender; private String memberPhotoUrl; } MemberDto Member 엔티티를 직접 건드리지 않고 member 객체를 이용할 수 있다. UpdateMemberInput과 거의 동일하다. @Getter @Setter @Builder @NoArgsConstructor @AllA..