Skip to content

Commit

Permalink
feat: 이메일/닉네임 중복 점검 기능 추가
Browse files Browse the repository at this point in the history
회원가입 시 한 번에 점검하던 이메일, 닉네임 중복 점검을 각각 이메일 점검 api, 닉네임 점검 api로 분리함
  • Loading branch information
chaeyoungeee committed Jul 30, 2024
1 parent 11cfe1b commit 72ae8ed
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 15 deletions.
16 changes: 14 additions & 2 deletions src/main/java/likelion/MZConnent/api/member/LoginController.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public ResponseEntity register(@Valid @RequestBody CreateMemberRequest request,
Long memberId = loginService.createUser(request);
log.info("회원가입 성공: {}", memberId);

return ResponseEntity.ok("회원가입 성공");
return ResponseEntity.ok(Map.of("message", "회원가입 성공"));
}

@PostMapping("/api/auth/login")
Expand All @@ -50,7 +50,7 @@ public ResponseEntity login(@Valid @RequestBody LoginMemberRequest request, Bind
}

@PostMapping("/api/auth/logout")
public ResponseEntity logout(@AuthenticationPrincipal UserPrinciple userPrinciple, @RequestHeader("Authorization") String authHeader) {
public ResponseEntity<Map<String, String>> logout(@AuthenticationPrincipal UserPrinciple userPrinciple, @RequestHeader("Authorization") String authHeader) {
String email = userPrinciple.getEmail();

log.info("로그아웃 이메일: {}", email);
Expand All @@ -60,4 +60,16 @@ public ResponseEntity logout(@AuthenticationPrincipal UserPrinciple userPrincipl

return ResponseEntity.ok(Map.of("message", "로그아웃 성공"));
}

@GetMapping("/api/auth/email")
public ResponseEntity<Map<String, String>> checkDuplicateEmail(@RequestParam("email") String email) {
loginService.checkDuplicateEmail(email);
return ResponseEntity.ok(Map.of("message", "이메일 중복 점검 성공"));
}

@GetMapping("/api/auth/username")
public ResponseEntity<Map<String, String>> checkDuplicateUsername(@RequestParam("username") String username) {
loginService.checkDuplicateUsername(username);
return ResponseEntity.ok(Map.of("message", "닉네임 중복 점검 성공"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public class SecurityConfig {

// 아무나 접근 가능한 URI
private final String[] permitAllUrl = {"/error",
"/api/auth/login", // 회원
"/api/auth/login", "/api/auth/email", "/api/auth/username", // 회원
"/api/categories/culture", "/api/cultures", "/api/cultures/**", // 문화
"/api/reviews", // 후기
"/api/categories/region", "/api/clubs/list",
Expand Down
29 changes: 17 additions & 12 deletions src/main/java/likelion/MZConnent/service/member/LoginService.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,18 +45,6 @@ public Long createUser(CreateMemberRequest request) {
// 비밀번호 정책에 맞는지 점검
checkPasswordPolicy(request.getPassword());

// 이미 등록된 이메일인지 점검
if (memberRepository.existsByEmail(request.getEmail())) {
log.info("이미 등록된 이메일={}", request.getEmail());
throw new IllegalArgumentException("이미 등록된 이메일입니다.");
}

// 중복되는 닉네임인지 점검
if (memberRepository.existsByUsername(request.getUsername())) {
log.info("중복되는 닉네임={}", request.getEmail());
throw new IllegalArgumentException("중복되는 닉네임입니다.");
}

Member member = Member.builder()
.email(request.getEmail())
.password(passwordEncoder.encode(request.getPassword())) // 비밀번호 암호화
Expand Down Expand Up @@ -121,6 +109,22 @@ public void logoout(String accessToken, String email) {
accessTokenBlackList.setBlackList(accessToken, email);
}

// 이메일 중복 점검
public void checkDuplicateEmail(String email) {
if (memberRepository.existsByEmail(email)) {
log.info("이미 등록된 이메일={}", email);
throw new IllegalArgumentException("이미 등록된 이메일입니다.");
}
}

// 닉네임 중복 점검
public void checkDuplicateUsername(String username) {
if (memberRepository.existsByUsername(username)) {
log.info("중복되는 닉네임={}", username);
throw new IllegalArgumentException("중복되는 닉네임입니다.");
}
}


// 비밀번호 정책에 맞는지 점검하는 함수
private void checkPasswordPolicy(String password) {
Expand All @@ -146,4 +150,5 @@ private void checkPassword(String password, Member member) {
}
}


}

0 comments on commit 72ae8ed

Please sign in to comment.