-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bp 25 implement user registration (#6)
* feat : 회원가입 api 권한 수정, 엔드포인트 prefix 메소드 추가 * feat : 에러코드, 커스텀 에러 추가, 전역 핸들러에 로직구현 * feat : 회원가입 DTO추가, 멤버 컨트롤러 추가 * feat : 멤버 서비스 추가, 회원가입 기능 추가 * test : 컨트롤러 테스트, 유닛테스트 작성 * feat : 유저 비밀번호 암호화 추가 * rename : 파일 위치 수정 * test : 암호화 로직 추가 * rename : DTO 컨트롤러 패키지로 이동 * refactor : 매직넘버 삭제, HttpStatus사용 * refactor : 기존 ErrorCode를 인터페이스화, 도메인마다 에러코드 정의 * refactor : 에러코드 구조 변경에 따른 코드 수정 * chore : spring-validation 추가
- Loading branch information
Showing
18 changed files
with
443 additions
and
70 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
17 changes: 0 additions & 17 deletions
17
...n/java/gdsc/konkuk/platformcore/application/auth/exceptions/InvalidUserInfoException.java
This file was deleted.
Oops, something went wrong.
43 changes: 43 additions & 0 deletions
43
src/main/java/gdsc/konkuk/platformcore/application/member/MemberService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package gdsc.konkuk.platformcore.application.member; | ||
|
||
import java.util.Optional; | ||
|
||
import org.springframework.security.crypto.password.PasswordEncoder; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
import gdsc.konkuk.platformcore.application.member.exceptions.MemberErrorCode; | ||
import gdsc.konkuk.platformcore.application.member.exceptions.UserAlreadyExistException; | ||
import gdsc.konkuk.platformcore.controller.member.MemberRegisterRequest; | ||
import gdsc.konkuk.platformcore.domain.member.entity.Member; | ||
import gdsc.konkuk.platformcore.domain.member.repository.MemberRepository; | ||
import gdsc.konkuk.platformcore.global.responses.SuccessResponse; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
@Transactional(readOnly = true) | ||
public class MemberService { | ||
|
||
private final PasswordEncoder passwordEncoder; | ||
private final MemberRepository memberRepository; | ||
|
||
@Transactional | ||
public SuccessResponse register(MemberRegisterRequest registerRequest) { | ||
|
||
if(checkMemberAlreadyExist(registerRequest.getMemberId())) { | ||
throw UserAlreadyExistException.of(MemberErrorCode.USER_ALREADY_EXISTS); | ||
} | ||
|
||
String encodedPassword = passwordEncoder.encode(registerRequest.getPassword()); | ||
registerRequest.setPassword(encodedPassword); | ||
memberRepository.save(MemberRegisterRequest.toEntity(registerRequest)); | ||
|
||
return SuccessResponse.messageOnly(); | ||
} | ||
|
||
private boolean checkMemberAlreadyExist(String memberId) { | ||
Optional<Member> member = memberRepository.findByMemberId(memberId); | ||
return member.isPresent(); | ||
} | ||
} |
37 changes: 37 additions & 0 deletions
37
src/main/java/gdsc/konkuk/platformcore/application/member/exceptions/MemberErrorCode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package gdsc.konkuk.platformcore.application.member.exceptions; | ||
|
||
import gdsc.konkuk.platformcore.global.exceptions.CustomErrorCode; | ||
import lombok.Getter; | ||
|
||
@Getter | ||
public enum MemberErrorCode implements CustomErrorCode { | ||
|
||
USER_NOT_FOUND("사용자가 존재하지 않습니다. 다시 입력해주세요", "[ERROR] : 사용자 정보를 찾을 수 없음"), | ||
INVALID_USER_INFO("사용자 정보가 올바르지 않습니다. 다시 입력해주세요", "[ERROR] : 사용자 정보가 올바르지 않음"), | ||
DEACTIVATED_USER("비활성화된 사용자입니다. 다시 확인해주세요", "[ERROR] : 탈퇴한 사용자"), | ||
USER_ALREADY_EXISTS("이미 존재하는 사용자입니다.", "[ERROR] : 이미 존재하는 사용자"); | ||
|
||
private final String message; | ||
private final String logMessage; | ||
|
||
MemberErrorCode(String message, String logMessage) { | ||
this.message = message; | ||
this.logMessage = logMessage; | ||
} | ||
|
||
|
||
@Override | ||
public String getLogMessage() { | ||
return this.logMessage; | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return this.name(); | ||
} | ||
|
||
@Override | ||
public String getMessage() { | ||
return this.message; | ||
} | ||
} |
15 changes: 15 additions & 0 deletions
15
...ava/gdsc/konkuk/platformcore/application/member/exceptions/UserAlreadyExistException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package gdsc.konkuk.platformcore.application.member.exceptions; | ||
|
||
import gdsc.konkuk.platformcore.global.exceptions.BusinessException; | ||
import gdsc.konkuk.platformcore.global.exceptions.CustomErrorCode; | ||
|
||
public class UserAlreadyExistException extends BusinessException { | ||
|
||
protected UserAlreadyExistException(CustomErrorCode errorCode, String logMessage) { | ||
super(errorCode, logMessage); | ||
} | ||
|
||
public static UserAlreadyExistException of(CustomErrorCode errorCode) { | ||
return new UserAlreadyExistException(errorCode, errorCode.getLogMessage()); | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
src/main/java/gdsc/konkuk/platformcore/controller/member/MemberController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package gdsc.konkuk.platformcore.controller.member; | ||
|
||
import org.springframework.http.HttpStatus; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
import gdsc.konkuk.platformcore.application.member.MemberService; | ||
import gdsc.konkuk.platformcore.global.responses.SuccessResponse; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
@RestController | ||
@RequestMapping("/api/v1/members") | ||
@RequiredArgsConstructor | ||
public class MemberController { | ||
|
||
private final MemberService memberService; | ||
|
||
@PostMapping() | ||
public ResponseEntity<SuccessResponse> signup(@RequestBody MemberRegisterRequest registerRequest) { | ||
memberService.register(registerRequest); | ||
return ResponseEntity.status(HttpStatus.CREATED).body(SuccessResponse.messageOnly()); | ||
} | ||
|
||
} |
32 changes: 32 additions & 0 deletions
32
src/main/java/gdsc/konkuk/platformcore/controller/member/MemberRegisterRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package gdsc.konkuk.platformcore.controller.member; | ||
|
||
import gdsc.konkuk.platformcore.domain.member.entity.Member; | ||
import jakarta.validation.constraints.NotEmpty; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.Setter; | ||
|
||
@Getter | ||
@Setter | ||
@Builder | ||
public class MemberRegisterRequest { | ||
@NotEmpty | ||
private String memberId; | ||
@NotEmpty | ||
private String password; | ||
@NotEmpty | ||
private String name; | ||
@NotEmpty | ||
private String email; | ||
private int batch; | ||
|
||
public static Member toEntity(MemberRegisterRequest request) { | ||
return Member.builder() | ||
.memberId(request.getMemberId()) | ||
.password(request.getPassword()) | ||
.name(request.getName()) | ||
.email(request.getEmail()) | ||
.batch(request.getBatch()) | ||
.build(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 10 additions & 0 deletions
10
src/main/java/gdsc/konkuk/platformcore/global/exceptions/CustomErrorCode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package gdsc.konkuk.platformcore.global.exceptions; | ||
|
||
public interface CustomErrorCode { | ||
|
||
String getLogMessage(); | ||
|
||
String getName(); | ||
|
||
String getMessage(); | ||
} |
23 changes: 0 additions & 23 deletions
23
src/main/java/gdsc/konkuk/platformcore/global/exceptions/ErrorCode.java
This file was deleted.
Oops, something went wrong.
37 changes: 37 additions & 0 deletions
37
src/main/java/gdsc/konkuk/platformcore/global/exceptions/GlobalErrorCode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package gdsc.konkuk.platformcore.global.exceptions; | ||
|
||
import lombok.Getter; | ||
|
||
@Getter | ||
public enum GlobalErrorCode implements CustomErrorCode{ | ||
|
||
// DTO Validation에서 발생한 에러 처리를 위한 코드 | ||
ARGUMENT_NOT_VALID("잘못된 입력입니다. 다시 확인해주세요", "[ERROR] : 400 컨트롤러 벨리데이션 실패 잘못된 인자"), | ||
|
||
NOT_FOUND("찾을 수 없습니다. 다시 확인해주세요", "[ERROR] : 404 에러 발생"), | ||
INTERNAL_SERVER_ERROR("서버 오류입니다. 잠시후 재시도 해주세요", "[ERROR] : 500 예상치못한 에러 발생"); | ||
|
||
private final String message; | ||
private final String logMessage; | ||
|
||
|
||
GlobalErrorCode(String message, String logMessage) { | ||
this.message = message; | ||
this.logMessage = logMessage; | ||
} | ||
|
||
@Override | ||
public String getLogMessage() { | ||
return this.logMessage; | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return this.name(); | ||
} | ||
|
||
@Override | ||
public String getMessage() { | ||
return this.message; | ||
} | ||
} |
Oops, something went wrong.