refactor: 코드리뷰 피드백 반영

This commit is contained in:
dongHyo
2022-06-22 22:14:47 +09:00
parent f037f4f46f
commit 3f85f06555
8 changed files with 80 additions and 22 deletions

View File

@@ -0,0 +1,28 @@
package com.ticketing.server.global.validator.constraints;
import com.ticketing.server.global.validator.constraintvalidators.FieldsValueNotMatchValidator;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
@Constraint(validatedBy = FieldsValueNotMatchValidator.class)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FieldsValueNotMatch {
String message();
String field();
String fieldMatch();
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}

View File

@@ -0,0 +1,29 @@
package com.ticketing.server.global.validator.constraintvalidators;
import com.ticketing.server.global.validator.constraints.FieldsValueNotMatch;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.springframework.beans.BeanWrapperImpl;
public class FieldsValueNotMatchValidator implements ConstraintValidator<FieldsValueNotMatch, Object> {
private String field;
private String fieldMatch;
public void initialize(FieldsValueNotMatch constraintAnnotation) {
this.field = constraintAnnotation.field();
this.fieldMatch = constraintAnnotation.fieldMatch();
}
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
Object fieldValue = new BeanWrapperImpl(value).getPropertyValue(field);
Object fieldMatchValue = new BeanWrapperImpl(value).getPropertyValue(fieldMatch);
if (fieldValue != null) {
return !fieldValue.equals(fieldMatchValue);
} else {
return fieldMatchValue != null;
}
}
}

View File

@@ -3,7 +3,6 @@ package com.ticketing.server.user.application;
import com.ticketing.server.user.application.request.LoginRequest;
import com.ticketing.server.user.application.response.TokenDto;
import com.ticketing.server.user.service.interfaces.AuthenticationService;
import javax.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders;
@@ -24,27 +23,30 @@ public class AuthController {
private final AuthenticationService authenticationService;
@PostMapping("/token")
public ResponseEntity<TokenDto> login(@RequestBody LoginRequest loginRequest, HttpServletResponse response) {
public ResponseEntity<TokenDto> login(@RequestBody LoginRequest loginRequest) {
TokenDto tokenDto = authenticationService.generateTokenDto(loginRequest.toAuthentication());
setNotCaching(response);
return ResponseEntity.status(HttpStatus.OK).body(tokenDto);
return ResponseEntity.status(HttpStatus.OK)
.headers(getHttpHeaders())
.body(tokenDto);
}
@PostMapping("/refresh")
public ResponseEntity<TokenDto> refreshToken(@RequestParam("refreshToken") String refreshToken, HttpServletResponse response) {
public ResponseEntity<TokenDto> refreshToken(@RequestParam("refreshToken") String refreshToken) {
TokenDto tokenDto = authenticationService.reissueTokenDto(refreshToken);
setNotCaching(response);
return ResponseEntity.status(HttpStatus.OK).body(tokenDto);
return ResponseEntity.status(HttpStatus.OK)
.headers(getHttpHeaders())
.body(tokenDto);
}
private HttpServletResponse setNotCaching(HttpServletResponse response) {
response.setHeader(HttpHeaders.CACHE_CONTROL, "no-cache, no-store, must-revalidate");
response.setHeader(HttpHeaders.PRAGMA, "no-store");
response.setHeader(HttpHeaders.EXPIRES, "0");
private HttpHeaders getHttpHeaders() {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set(HttpHeaders.CACHE_CONTROL, "no-cache, no-store, must-revalidate");
httpHeaders.set(HttpHeaders.PRAGMA, "no-store");
httpHeaders.set(HttpHeaders.EXPIRES, "0");
return response;
return httpHeaders;
}
}

View File

@@ -61,12 +61,6 @@ public class UserController {
public ResponseEntity<UserChangePasswordResponse> changePassword(
@AuthenticationPrincipal UserDetails userRequest,
@RequestBody @Valid UserChangePasswordRequest request) {
if (request.oldEqualNew()) {
log.error("기존 패스워드와 동일한 패스워드로 변경할 수 없습니다.");
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
User user = userService.changePassword(request.toChangePasswordDto(userRequest.getUsername(), passwordEncoder));
return ResponseEntity.status(HttpStatus.OK).body(UserChangePasswordResponse.from(user));
}

View File

@@ -1,5 +1,6 @@
package com.ticketing.server.user.application.request;
import com.ticketing.server.global.validator.constraints.FieldsValueNotMatch;
import com.ticketing.server.user.service.dto.ChangePasswordDTO;
import javax.validation.constraints.NotEmpty;
import lombok.AllArgsConstructor;
@@ -10,6 +11,11 @@ import org.springframework.security.crypto.password.PasswordEncoder;
@Getter
@NoArgsConstructor
@AllArgsConstructor
@FieldsValueNotMatch(
field = "oldPassword",
fieldMatch = "newPassword",
message = "{validation.password.not.change}"
)
public class UserChangePasswordRequest {
@NotEmpty(message = "{validation.not.empty.oldpassword}")
@@ -22,8 +28,4 @@ public class UserChangePasswordRequest {
return new ChangePasswordDTO(email, oldPassword, newPassword, passwordEncoder);
}
public boolean oldEqualNew() {
return oldPassword.equals(newPassword);
}
}

View File

@@ -7,3 +7,4 @@ validation.not.empty.grade="\uC0AC\uC6A9\uC790 \uB4F1\uAE09\uC740 \uD544\uC218 \
validation.not.empty.phone="\uD734\uB300\uBC88\uD638\uB294 \uD544\uC218 \uC785\uB2C8\uB2E4."
validation.email="\uC774\uBA54\uC77C\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."
validation.phone="\uD734\uB300\uBC88\uD638\uAC00 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."
validation.password.not.change="\uB3D9\uC77C\uD55C \uD328\uC2A4\uC6CC\uB4DC\uB85C \uBCC0\uACBD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."

View File

@@ -7,3 +7,4 @@ validation.not.empty.grade="user grade is required."
validation.not.empty.phone="phone is required."
validation.email="email is not valid."
validation.phone="phone is not valid."
validation.password.not.change="password not change."

View File

@@ -7,3 +7,4 @@ validation.not.empty.grade="\uC0AC\uC6A9\uC790 \uB4F1\uAE09\uC740 \uD544\uC218 \
validation.not.empty.phone="\uD734\uB300\uBC88\uD638\uB294 \uD544\uC218 \uC785\uB2C8\uB2E4."
validation.email="\uC774\uBA54\uC77C\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."
validation.phone="\uD734\uB300\uBC88\uD638\uAC00 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."
validation.password.not.change="\uB3D9\uC77C\uD55C \uD328\uC2A4\uC6CC\uB4DC\uB85C \uBCC0\uACBD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."