Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#45] find email #64

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
import com.airjnc.user.domain.UserEntity;
import com.airjnc.user.dto.request.CreateDTO;
import com.airjnc.user.dto.response.UserDTO;
import java.time.LocalDate;
import javax.annotation.processing.Generated;
import org.springframework.stereotype.Component;

@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2022-07-26T18:22:14+0900",
date = "2022-07-29T19:30:31+0900",
comments = "version: 1.5.2.Final, compiler: javac, environment: Java 11.0.10 (AdoptOpenJDK)"
)
@Component
Expand Down Expand Up @@ -46,6 +47,9 @@ public UserEntity createDTOToUserEntity(CreateDTO createDTO) {
userEntity.password( createDTO.getPassword() );
userEntity.name( createDTO.getName() );
userEntity.gender( createDTO.getGender() );
if ( createDTO.getBirthDate() != null ) {
userEntity.birthDate( LocalDate.parse( createDTO.getBirthDate() ) );
}

return userEntity.build();
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/airjnc/common/advice/ExceptionAdvice.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.MessageSource;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
Expand Down Expand Up @@ -45,7 +45,7 @@ public ErrorResponse handleDefaultException(DefaultException ex) {
}

// 400 - Bean Validation, BAD REQUEST
@ExceptionHandler({MethodArgumentNotValidException.class, BadRequestException.class})
@ExceptionHandler({BindException.class, BadRequestException.class})
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ErrorResponse handleBadRequestException(Exception ex) {
return ErrorResponseFactory.create(ex, messageSource);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.airjnc.common.exception;


import com.airjnc.common.util.constant.ErrorCode;
import com.airjnc.common.util.enumerate.ErrorCode;
import com.airjnc.common.util.factory.ErrorsFactory;
import org.springframework.validation.Errors;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.airjnc.common.exception;

import com.airjnc.common.util.constant.ErrorCode;
import com.airjnc.common.util.enumerate.ErrorCode;
import com.airjnc.common.util.factory.ErrorsFactory;
import org.springframework.validation.Errors;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.airjnc.common.exception;


import com.airjnc.common.util.constant.ErrorCode;
import com.airjnc.common.util.enumerate.ErrorCode;
import com.airjnc.common.util.factory.ErrorsFactory;
import org.springframework.validation.Errors;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.airjnc.common.exception;


import com.airjnc.common.util.constant.ErrorCode;
import com.airjnc.common.util.enumerate.ErrorCode;
import com.airjnc.common.util.factory.ErrorsFactory;
import org.springframework.validation.Errors;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.airjnc.common.exception;


import com.airjnc.common.util.constant.ErrorCode;
import com.airjnc.common.util.enumerate.ErrorCode;
import com.airjnc.common.util.factory.ErrorsFactory;
import org.springframework.validation.Errors;

Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/airjnc/common/util/CommonRegex.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.airjnc.common.util;

public interface CommonRegex {

String localDate = "\\d{4}-\\d{2}-\\d{2}";
}
5 changes: 0 additions & 5 deletions src/main/java/com/airjnc/common/util/constant/SessionKey.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.airjnc.common.util.constant;
package com.airjnc.common.util.enumerate;

public enum ErrorCode {
INTERNAL,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.airjnc.common.util.enumerate;

public enum SessionKey {
USER,
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.airjnc.common.util.factory;

import com.airjnc.common.util.constant.ErrorCode;
import com.airjnc.common.util.enumerate.ErrorCode;
import org.springframework.validation.BeanPropertyBindingResult;
import org.springframework.validation.Errors;

Expand Down
9 changes: 8 additions & 1 deletion src/main/java/com/airjnc/user/controller/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@
import com.airjnc.common.annotation.CheckAuth;
import com.airjnc.common.annotation.CurrentUserId;
import com.airjnc.user.dto.request.CreateDTO;
import com.airjnc.user.dto.request.FindEmailDTO;
import com.airjnc.user.dto.response.UserDTO;
import com.airjnc.user.service.UserService;
import com.airjnc.user.service.UserStateService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
Expand All @@ -25,6 +28,11 @@ public class UserController {

private final UserStateService userStateService;

@GetMapping("/findEmail")
public String findEmail(@Validated @ModelAttribute FindEmailDTO findEmailDTO) {
return userService.findEmail(findEmailDTO);
}

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public UserDTO create(@RequestBody @Validated CreateDTO createDTO) {
Expand All @@ -33,7 +41,6 @@ public UserDTO create(@RequestBody @Validated CreateDTO createDTO) {
return userDTO;
}


@DeleteMapping("/me")
@ResponseStatus(HttpStatus.NO_CONTENT)
@CheckAuth
Expand Down
11 changes: 7 additions & 4 deletions src/main/java/com/airjnc/user/dao/UserRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@

import com.airjnc.user.domain.UserEntity;
import com.airjnc.user.dto.request.CreateDTO;
import com.airjnc.user.dto.request.FindEmailDTO;

public interface UserRepository {

UserEntity findById(Long id);

UserEntity findByEmail(String email);
void remove(Long id);

UserEntity save(CreateDTO createDTO);

void remove(Long id);
String getEmail(FindEmailDTO findEmailDTO);

UserEntity findByEmail(String email);

UserEntity findById(Long id);
}
26 changes: 16 additions & 10 deletions src/main/java/com/airjnc/user/dao/impl/MybatisUserRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.airjnc.user.dao.mapper.UserMapper;
import com.airjnc.user.domain.UserEntity;
import com.airjnc.user.dto.request.CreateDTO;
import com.airjnc.user.dto.request.FindEmailDTO;
import com.airjnc.user.util.UserModelMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
Expand All @@ -21,13 +22,9 @@ public class MybatisUserRepository implements UserRepository {
private final UserModelMapper userModelMapper;

@Override
public UserEntity findById(Long id) {
return userMapper.findById(id).orElseThrow(NotFoundException::new);
}

@Override
public UserEntity findByEmail(String email) {
return userMapper.findByEmail(email).orElseThrow(NotFoundException::new);
public void remove(Long id) {
int affect = userMapper.remove(id);
commonInternalCheckService.shouldBeMatch(affect, 1);
}

@Override
Expand All @@ -38,8 +35,17 @@ public UserEntity save(CreateDTO createDTO) {
}

@Override
public void remove(Long id) {
int affect = userMapper.remove(id);
commonInternalCheckService.shouldBeMatch(affect, 1);
public String getEmail(FindEmailDTO findEmailDTO) {
return userMapper.getEmail(findEmailDTO).orElseThrow(NotFoundException::new);
}

@Override
public UserEntity findById(Long id) {
return userMapper.findById(id).orElseThrow(NotFoundException::new);
}

@Override
public UserEntity findByEmail(String email) {
return userMapper.findByEmail(email).orElseThrow(NotFoundException::new);
memoer marked this conversation as resolved.
Show resolved Hide resolved
}
}
11 changes: 7 additions & 4 deletions src/main/java/com/airjnc/user/dao/mapper/UserMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,20 @@

import com.airjnc.user.domain.UserEntity;
import com.airjnc.user.dto.request.CreateDTO;
import com.airjnc.user.dto.request.FindEmailDTO;
import java.util.Optional;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper {

Optional<UserEntity> findById(Long id);

Optional<UserEntity> findByEmail(String email);
int remove(Long id);

int save(CreateDTO createDTO);

int remove(Long id);
Optional<String> getEmail(FindEmailDTO findEmailDTO);

Optional<UserEntity> findById(Long id);

Optional<UserEntity> findByEmail(String email);
}
13 changes: 10 additions & 3 deletions src/main/java/com/airjnc/user/dto/request/CreateDTO.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.airjnc.user.dto.request;

import com.airjnc.common.util.BCryptHashEncrypter;
import com.airjnc.common.util.CommonRegex;
import com.airjnc.user.domain.Gender;
import com.airjnc.user.util.Regex;
import com.airjnc.user.util.UserRegex;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
Expand All @@ -28,16 +29,22 @@ public class CreateDTO {
private Gender gender;

@NotNull
@Pattern(regexp = Regex.Password.format)
@Pattern(regexp = UserRegex.password)
private String password;

@NotNull
@Pattern(regexp = CommonRegex.localDate)
private String birthDate;

@Builder
public CreateDTO(Long id, String email, String password, String name, Gender gender) {
public CreateDTO(Long id, String email, String password, String name, Gender gender,
String birthDate) {
this.id = id;
this.email = email;
this.password = password;
this.name = name;
this.gender = gender;
this.birthDate = birthDate;
}

public void changePasswordToHash() {
Expand Down
23 changes: 23 additions & 0 deletions src/main/java/com/airjnc/user/dto/request/FindEmailDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.airjnc.user.dto.request;

import com.airjnc.common.util.CommonRegex;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import lombok.Builder;
import lombok.Getter;

@Getter
public class FindEmailDTO {

@NotNull
private final String name;

@Pattern(regexp = CommonRegex.localDate)
private final String birthDate;

@Builder
public FindEmailDTO(String name, String birthDate) {
this.name = name;
this.birthDate = birthDate;
}
}
4 changes: 2 additions & 2 deletions src/main/java/com/airjnc/user/dto/request/LogInDTO.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.airjnc.user.dto.request;

import com.airjnc.user.util.Regex;
import com.airjnc.user.util.UserRegex;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
Expand All @@ -18,7 +18,7 @@ public class LogInDTO {
private String email;

@NotNull
@Pattern(regexp = Regex.Password.format)
@Pattern(regexp = UserRegex.password)
private String password;

@Builder
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.airjnc.user.service;

import com.airjnc.common.util.constant.SessionKey;
import com.airjnc.common.util.enumerate.SessionKey;
import javax.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/com/airjnc/user/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.airjnc.user.dao.UserRepository;
import com.airjnc.user.domain.UserEntity;
import com.airjnc.user.dto.request.CreateDTO;
import com.airjnc.user.dto.request.FindEmailDTO;
import com.airjnc.user.dto.response.UserDTO;
import com.airjnc.user.util.UserModelMapper;
import lombok.RequiredArgsConstructor;
Expand All @@ -28,4 +29,8 @@ public UserDTO create(CreateDTO createDTO) {
public void remove(Long id) {
userRepository.remove(id);
}

public String findEmail(FindEmailDTO findEmailDTO) {
return userRepository.getEmail(findEmailDTO);
}
}
10 changes: 0 additions & 10 deletions src/main/java/com/airjnc/user/util/Regex.java

This file was deleted.

7 changes: 7 additions & 0 deletions src/main/java/com/airjnc/user/util/UserRegex.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.airjnc.user.util;

public interface UserRegex {

String password = "^(?=.*[0-9])(?=.*[a-z])(?=.*[@#!~$%^&-+=()])(?=\\S+$).{8,16}$";
}

2 changes: 0 additions & 2 deletions src/main/resources/application-local.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,3 @@ spring.datasource.password=q1w2e3
logging.level.org.springframework.jdbc=debug
# MessageSource
spring.messages.basename=errors
# Session
session.expire=86400
2 changes: 1 addition & 1 deletion src/main/resources/messages/errors.properties
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ Pattern.password=\uC601\uC5B4 \uC18C\uBB38\uC790, \uC22B\uC790, \uD2B9\uC218\uBB
### Mine
UserCheckService.emailIsDuplicated=\uC774\uBBF8 \uC874\uC7AC\uD558\uB294 \uC774\uBA54\uC77C\uC785\uB2C8\uB2E4.
UserCheckService.passwordIsNotMatch=\uBE44\uBC00\uBC88\uD638\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
CommonCheckService.isNotMatch=actual: {0}, but expected: {1}
CommonInternalCheckService.isNotMatch=actual: {0}, but expected: {1}
Loading