diff --git a/src/main/java/com/io/realworld/domain/aggregate/user/controller/UserController.java b/src/main/java/com/io/realworld/domain/aggregate/user/controller/UserController.java index 45ec9ee..6188db1 100644 --- a/src/main/java/com/io/realworld/domain/aggregate/user/controller/UserController.java +++ b/src/main/java/com/io/realworld/domain/aggregate/user/controller/UserController.java @@ -3,6 +3,7 @@ package com.io.realworld.domain.aggregate.user.controller; import com.io.realworld.domain.aggregate.user.dto.UserAuth; import com.io.realworld.domain.aggregate.user.dto.UserResponse; import com.io.realworld.domain.aggregate.user.dto.UserSignupRequest; +import com.io.realworld.domain.aggregate.user.dto.UserUpdate; import com.io.realworld.domain.aggregate.user.entity.User; import com.io.realworld.domain.aggregate.user.service.UserService; import com.io.realworld.domain.aggregate.user.service.UserServiceImpl; @@ -10,11 +11,10 @@ import lombok.AllArgsConstructor; import lombok.Value; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.annotation.AuthenticationPrincipal; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; @RestController @Slf4j @@ -31,4 +31,9 @@ public class UserController { public UserResponse currentUser(@AuthenticationPrincipal UserAuth userAuth) { return userService.getCurrentUser(userAuth); } + + @PutMapping + public UserResponse updateUser(@Valid @RequestBody UserUpdate userUpdate){ + return userService.updateUser(userUpdate); + } } diff --git a/src/main/java/com/io/realworld/domain/aggregate/user/dto/UserUpdate.java b/src/main/java/com/io/realworld/domain/aggregate/user/dto/UserUpdate.java new file mode 100644 index 0000000..68d9bc7 --- /dev/null +++ b/src/main/java/com/io/realworld/domain/aggregate/user/dto/UserUpdate.java @@ -0,0 +1,25 @@ +package com.io.realworld.domain.aggregate.user.dto; + +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonTypeName; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; + +@Builder +@Getter +@ToString +@JsonTypeName("user") +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT) +public class UserUpdate { + + @Email + private String email; + private String username; + private String password; + private String bio; + private String image; +} diff --git a/src/main/java/com/io/realworld/domain/aggregate/user/service/UserService.java b/src/main/java/com/io/realworld/domain/aggregate/user/service/UserService.java index e890509..2e844d0 100644 --- a/src/main/java/com/io/realworld/domain/aggregate/user/service/UserService.java +++ b/src/main/java/com/io/realworld/domain/aggregate/user/service/UserService.java @@ -1,9 +1,6 @@ package com.io.realworld.domain.aggregate.user.service; -import com.io.realworld.domain.aggregate.user.dto.UserAuth; -import com.io.realworld.domain.aggregate.user.dto.UserResponse; -import com.io.realworld.domain.aggregate.user.dto.UserSigninRequest; -import com.io.realworld.domain.aggregate.user.dto.UserSignupRequest; +import com.io.realworld.domain.aggregate.user.dto.*; import com.io.realworld.domain.aggregate.user.entity.User; public interface UserService { @@ -12,4 +9,6 @@ public interface UserService { UserResponse signin(UserSigninRequest userSigninRequest); UserResponse getCurrentUser(UserAuth userAuth); + + UserResponse updateUser(UserUpdate userUpdate); } diff --git a/src/main/java/com/io/realworld/domain/aggregate/user/service/UserServiceImpl.java b/src/main/java/com/io/realworld/domain/aggregate/user/service/UserServiceImpl.java index 4c7d09d..801adee 100644 --- a/src/main/java/com/io/realworld/domain/aggregate/user/service/UserServiceImpl.java +++ b/src/main/java/com/io/realworld/domain/aggregate/user/service/UserServiceImpl.java @@ -1,9 +1,6 @@ package com.io.realworld.domain.aggregate.user.service; -import com.io.realworld.domain.aggregate.user.dto.UserAuth; -import com.io.realworld.domain.aggregate.user.dto.UserResponse; -import com.io.realworld.domain.aggregate.user.dto.UserSigninRequest; -import com.io.realworld.domain.aggregate.user.dto.UserSignupRequest; +import com.io.realworld.domain.aggregate.user.dto.*; import com.io.realworld.domain.service.JwtService; import com.io.realworld.exception.CustomException; import com.io.realworld.exception.Error; @@ -62,6 +59,18 @@ public class UserServiceImpl implements UserService { } } + @Override + public UserResponse updateUser(UserUpdate userUpdate){ + System.out.println(userUpdate.toString()); + userRepository.save(User.builder() + .username(userUpdate.getUsername()) + .image(userUpdate.getImage()) + .bio(userUpdate.getBio()) + .password(userUpdate.getPassword()) + .email(userUpdate.getEmail()).build()); + return convertUser(); + } + private UserResponse convertUser(User user){ return UserResponse.builder().username(user.getUsername())