-
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 추가 * Bp 26 implement user withdraw (#8) * feat : 객체 생성 시 필드 체크를 위한 Validator생성 * feat : 멤버 엔티티객체 필드 기본값 수정, 탈퇴로직 구현 * feat : 회원 탈퇴 로직 구현 * feat : 시큐리티 회원가입, 로그인 csrf해제 * feat : 시큐리티 유틸성 클래스 추가 * feat : 멤버 서비스 예외 추가와 에러코드 추가 * style : 코드 포맷 수정 * test: 테스트코드 수정, 삭제 테스트코드 작성 * feat : Spring Validation에서 발생하는 에러 핸들링 * test : mock user 어노테이션추가 * refactor : 코드리뷰 적용 * fix ; csrf 비활성화 * feat : 식별자 전략 명시 IDENTITY
- Loading branch information
Showing
31 changed files
with
772 additions
and
112 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
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.
49 changes: 49 additions & 0 deletions
49
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,49 @@ | ||
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.application.member.exceptions.UserNotFoundException; | ||
import gdsc.konkuk.platformcore.controller.member.MemberRegisterRequest; | ||
import gdsc.konkuk.platformcore.domain.member.entity.Member; | ||
import gdsc.konkuk.platformcore.domain.member.repository.MemberRepository; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
@Transactional(readOnly = true) | ||
public class MemberService { | ||
|
||
private final PasswordEncoder passwordEncoder; | ||
private final MemberRepository memberRepository; | ||
|
||
@Transactional | ||
public Member register(MemberRegisterRequest registerRequest) { | ||
|
||
if (checkMemberExistWithMemberId(registerRequest.getMemberId())) { | ||
throw UserAlreadyExistException.of(MemberErrorCode.USER_ALREADY_EXISTS); | ||
} | ||
|
||
String encodedPassword = passwordEncoder.encode(registerRequest.getPassword()); | ||
registerRequest.setPassword(encodedPassword); | ||
|
||
return memberRepository.save(MemberRegisterRequest.toEntity(registerRequest)); | ||
} | ||
|
||
@Transactional | ||
public void withdraw(Long currentId) { | ||
Member member = memberRepository.findById(currentId) | ||
.orElseThrow(() -> UserNotFoundException.of(MemberErrorCode.USER_NOT_FOUND)); | ||
member.withdraw(); | ||
} | ||
|
||
private boolean checkMemberExistWithMemberId(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] : 이미 존재하는 사용자"), | ||
USER_ALREADY_DELETED("이미 삭제된 사용자입니다.", "[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; | ||
} | ||
} |
16 changes: 16 additions & 0 deletions
16
...a/gdsc/konkuk/platformcore/application/member/exceptions/UserAlreadyDeletedException.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,16 @@ | ||
package gdsc.konkuk.platformcore.application.member.exceptions; | ||
|
||
import gdsc.konkuk.platformcore.global.exceptions.BusinessException; | ||
import gdsc.konkuk.platformcore.global.exceptions.CustomErrorCode; | ||
|
||
public class UserAlreadyDeletedException extends BusinessException { | ||
|
||
protected UserAlreadyDeletedException(CustomErrorCode errorCode, | ||
String logMessage) { | ||
super(errorCode, logMessage); | ||
} | ||
|
||
public static UserAlreadyDeletedException of(CustomErrorCode errorCode) { | ||
return new UserAlreadyDeletedException(errorCode, errorCode.getMessage()); | ||
} | ||
} |
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()); | ||
} | ||
} |
16 changes: 16 additions & 0 deletions
16
...in/java/gdsc/konkuk/platformcore/application/member/exceptions/UserNotFoundException.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,16 @@ | ||
package gdsc.konkuk.platformcore.application.member.exceptions; | ||
|
||
import gdsc.konkuk.platformcore.global.exceptions.BusinessException; | ||
import gdsc.konkuk.platformcore.global.exceptions.CustomErrorCode; | ||
|
||
public class UserNotFoundException extends BusinessException { | ||
|
||
protected UserNotFoundException(CustomErrorCode errorCode, | ||
String logMessage) { | ||
super(errorCode, logMessage); | ||
} | ||
|
||
public static UserNotFoundException of(CustomErrorCode errorCode) { | ||
return new UserNotFoundException(errorCode, errorCode.getMessage()); | ||
} | ||
} |
48 changes: 48 additions & 0 deletions
48
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,48 @@ | ||
package gdsc.konkuk.platformcore.controller.member; | ||
|
||
import java.net.URI; | ||
|
||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.DeleteMapping; | ||
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 org.springframework.web.servlet.support.ServletUriComponentsBuilder; | ||
|
||
import gdsc.konkuk.platformcore.application.member.MemberService; | ||
import gdsc.konkuk.platformcore.domain.member.entity.Member; | ||
import gdsc.konkuk.platformcore.global.utils.SecurityUtils; | ||
import gdsc.konkuk.platformcore.global.responses.Response; | ||
import gdsc.konkuk.platformcore.global.responses.SuccessResponse; | ||
import jakarta.validation.Valid; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
@RestController | ||
@RequestMapping("/api/v1/members") | ||
@RequiredArgsConstructor | ||
public class MemberController { | ||
|
||
private final MemberService memberService; | ||
|
||
@PostMapping() | ||
public ResponseEntity<Response> signup(@RequestBody @Valid MemberRegisterRequest registerRequest) { | ||
Member registeredMember = memberService.register(registerRequest); | ||
return ResponseEntity.created(getCreatedURI(registeredMember.getId())).body(SuccessResponse.messageOnly()); | ||
} | ||
|
||
@DeleteMapping() | ||
public ResponseEntity<Response> withdraw() { | ||
Long currentId = SecurityUtils.getCurrentUserId(); | ||
memberService.withdraw(currentId); | ||
return ResponseEntity.ok(SuccessResponse.messageOnly()); | ||
} | ||
|
||
private URI getCreatedURI(Long memberId) { | ||
return ServletUriComponentsBuilder | ||
.fromCurrentRequest() | ||
.path("/{id}") | ||
.buildAndExpand(memberId) | ||
.toUri(); | ||
} | ||
} |
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(); | ||
} | ||
} |
Oops, something went wrong.