2022/10 26

회원 비밀번호 초기화 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..

[스쿨 선발대] 백엔드 스쿨 10월 수강 후기

팀프로젝트가 어떻게 진행되었으며, 진행 시 느낀 점 현재, 프론트엔드 2명을 포함해서 5명이 한 조가 되어 팀프로젝트를 진행하고 있습니다. 2주차에 접어들은 상태이고 11월 중순 쯤에 팀별로 발표할 예정입니다. Open 가계부(SNS + 가계부)를 주제로 정해서 진행하려했으나 멘토님의 조언을 듣고 가계부 하나만 주제로 가져가게 되었습니다. 제로베이스에서 조를 배정해줬는데 모두 적극적으로 참여하는 분위기라서 팀 배정이 마음에 들었습니다. 저를 비롯해서 모두들 팀프로젝트 경험은 없지만 의욕이 넘칩니다! 그래서 시작한 날부터 지금까지 매일 밤마다 회의 및 데일리 스크럼을 진행할 수 있었습니다. 팀원들과잘 맞아서 다행입니다 ㅎㅎ 프론트는 두 분이서 맡아서 화면에 보이는 부분을 개발하고 백엔드는 회원, 수입, 지..

회원 이메일 인증 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..

회원 아이디 & 비밀번호 찾기

아이디(email) 찾기 & 비밀번호 찾기 API 이메일: api/password/email 비밀번호: api/password/email/phone email을 입력받아서 존재하는 아이디인지 확인한다. 새로운 Input 클래스를 만든다. 컨트롤러에서 @RequsetBody를 적용하기 위해서 만든다. @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor public class FindPasswordMemberInput { private String email; private String phone; } Impl 클래스 findMemberByEmail() 메서드를 findEmail(), findPhone() 에 모두 적용한다. private Mem..