Skip to content

Commit

Permalink
feature(#45): find_email controller layer 구현 및 단위테스트 및 ExceptionHandl…
Browse files Browse the repository at this point in the history
…er 수정
  • Loading branch information
hoon25 committed Aug 3, 2022
1 parent 57f7de4 commit 8751bfc
Show file tree
Hide file tree
Showing 11 changed files with 364 additions and 36 deletions.
6 changes: 3 additions & 3 deletions src/main/java/com/airjnc/common/auth/dto/AuthInfoDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
@ToString
public class AuthInfoDTO {

private Long id;
private String email;
private String name;
private final Long id;
private final String email;
private final String name;


@Builder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class ErrorResponseBody {

private final String message;
private final List<CustomFieldError> errors;
private int status;
private final int status;


private ErrorResponseBody(final MessageSource messageSource, final ErrorCode code, final List<CustomFieldError> errors) {
Expand Down Expand Up @@ -54,9 +54,9 @@ private static String getMessage(final MessageSource messageSource, final ErrorC

@Getter
public static class CustomFieldError {
private String field;
private String value;
private String reason;
private final String field;
private final String value;
private final String reason;

private CustomFieldError(String field, String value, String reason) {
this.field = field;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.airjnc.common.error.code.ErrorCode;
import com.airjnc.common.error.exception.BusinessException;
import com.airjnc.common.error.exception.DuplicateException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
Expand Down Expand Up @@ -43,14 +42,7 @@ protected ResponseEntity<ErrorResponseBody> handleValidationException(Validation
protected ResponseEntity<ErrorResponseBody> handleBusinessException(BusinessException e) {
log.error(e.getMessage());
final ErrorResponseBody errorResponseBody = ErrorResponseBody.of(messageSource, e.getErrorCode());
return ResponseEntity.status(resolveHttpStatus(ErrorCode.BUSINESS_EXCEPTION)).body(errorResponseBody);
}

@ExceptionHandler(DuplicateException.class)
protected ResponseEntity<ErrorResponseBody> handleDuplicateException(DuplicateException e) {
log.error(e.getMessage());
final ErrorResponseBody errorResponseBody = ErrorResponseBody.of(messageSource, ErrorCode.DUPLICATE_VALUE);
return ResponseEntity.status(resolveHttpStatus(ErrorCode.DUPLICATE_VALUE)).body(errorResponseBody);
return ResponseEntity.status(resolveHttpStatus(e.getErrorCode())).body(errorResponseBody);
}


Expand Down
78 changes: 78 additions & 0 deletions src/main/java/com/airjnc/user/controller/UserController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package com.airjnc.user.controller;

import com.airjnc.common.annotation.CurrentUser;
import com.airjnc.common.annotation.UserLoginCheck;
import com.airjnc.common.auth.dto.AuthInfoDTO;
import com.airjnc.common.auth.service.AuthService;
import com.airjnc.user.dto.request.FindEmailRequestDTO;
import com.airjnc.user.dto.request.LogInRequestDTO;
import com.airjnc.user.dto.request.SignUpDTO;
import com.airjnc.user.dto.response.FindEmailResponseDTO;
import com.airjnc.user.dto.response.FindPwdResponseDTO;
import com.airjnc.user.dto.response.UserDTO;
import com.airjnc.user.service.UserService;
import com.airjnc.user.valid.group.SignUpValid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;

@RestController
@RequestMapping("/user")
@Validated
@RequiredArgsConstructor
public class UserController {

private final UserService userService;
private final AuthService authService;

@GetMapping("login/findemail")
public ResponseEntity<FindEmailResponseDTO> findEmailByNameAndPhoneNumber(@RequestParam("name") String name, @RequestParam("phoneNumber") String phoneNumber) {
FindEmailResponseDTO findEmailResponseDTO = userService.findEmailByNameAndPhoneNumber(
FindEmailRequestDTO.builder()
.name(name).phoneNumber(phoneNumber)
.build());
return ResponseEntity.ok().body(findEmailResponseDTO);
}

@GetMapping("login/findpassword")
public ResponseEntity<FindPwdResponseDTO> findPasswordByEmail(@RequestParam("email")
@NotBlank(message = "{Validation.NotNull}") @Email(message = "{Validation.Email}") String email) {
FindPwdResponseDTO findPwdResponseDTO = userService.findPasswordByEmail(email);
return ResponseEntity.ok().body(findPwdResponseDTO);
}

@PostMapping("signup")
public ResponseEntity<UserDTO> userSignUp(@Validated(SignUpValid.class) @RequestBody SignUpDTO signUpDTO) {
UserDTO userDTO = userService.create(signUpDTO);
return ResponseEntity.status(HttpStatus.CREATED).body(userDTO);
}

@PostMapping("login")
public ResponseEntity<Object> userLogIn(@RequestBody LogInRequestDTO logInRequestDTO) {
AuthInfoDTO authInfoDTO = userService.logIn(logInRequestDTO);
authService.setAuthInfo(authInfoDTO);
return ResponseEntity.ok().body("LogIn Success");
}

@GetMapping("logout")
public ResponseEntity<Object> userLogOut() {
authService.clearAuthInfo();
return ResponseEntity.ok().body("LogOut Success");
}


// @UserLoginCheck, @CurrentUser 통합테스트를 위한 임시 url -> 추후 정상 URL추가 후 삭제 예정
@GetMapping("")
@UserLoginCheck

public ResponseEntity<AuthInfoDTO> tempMain(@CurrentUser AuthInfoDTO authInfoDTO) {
return ResponseEntity.ok().body(authInfoDTO);
}


}
8 changes: 4 additions & 4 deletions src/main/java/com/airjnc/user/dao/UserDAO.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@

public interface UserDAO {

public Optional<User> selectUserById(Long id);
Optional<User> selectUserById(Long id);

public Optional<User> selectUserByEmail(String email);
Optional<User> selectUserByEmail(String email);

public Optional<User> selectUserByNameAndPhoneNumber(@Param("name") String name, @Param("phoneNumber") String phoneNumber);
Optional<User> selectUserByNameAndPhoneNumber(@Param("name") String name, @Param("phoneNumber") String phoneNumber);

public void insertUser(User userEntity);
void insertUser(User userEntity);


}
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package com.airjnc.user.dto.request;

import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.*;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@EqualsAndHashCode(of = {"name", "phoneNumber"})
public class FindEmailRequestDTO {

String name;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class FindEmailResponseDTO {

String email;

@Builder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
import com.airjnc.common.error.exception.EntityNotFoundException;

public class FindEmailNotMatchException extends EntityNotFoundException {

public FindEmailNotMatchException() {
super("Check Name and PhoneNumber", ErrorCode.FIND_EMAIL_NOT_MATCH_EXCEPTION);
}

}
10 changes: 5 additions & 5 deletions src/main/java/com/airjnc/user/repository/UserRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@

public interface UserRepository {

public Optional<User> selectUserById(Long id);
Optional<User> selectUserById(Long id);

public Optional<User> selectUserByEmail(String email);

public Optional<User> selectUserByNameAndPhoneNumber(String name, String phoneNumber);
Optional<User> selectUserByEmail(String email);

public User insertUser(User user);
Optional<User> selectUserByNameAndPhoneNumber(String name, String phoneNumber);

User insertUser(User user);
}
8 changes: 4 additions & 4 deletions src/main/java/com/airjnc/user/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@

public interface UserService {

public FindEmailResponseDTO findEmailByNameAndPhoneNumber(FindEmailRequestDTO findEmailRequestDTO);
FindEmailResponseDTO findEmailByNameAndPhoneNumber(FindEmailRequestDTO findEmailRequestDTO);

public FindPwdResponseDTO findPasswordByEmail(String email);
FindPwdResponseDTO findPasswordByEmail(String email);

public UserDTO create(SignUpDTO signUpDTO);
UserDTO create(SignUpDTO signUpDTO);

public AuthInfoDTO logIn(LogInRequestDTO logInRequestDTO);
AuthInfoDTO logIn(LogInRequestDTO logInRequestDTO);
}
Loading

0 comments on commit 8751bfc

Please sign in to comment.