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 index 770a82a..558e146 100644 --- 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 @@ -22,4 +22,6 @@ public class UserUpdate { private String email; private String bio; private String image; + private String password; + private String username; } diff --git a/src/main/java/com/io/realworld/domain/aggregate/user/entity/User.java b/src/main/java/com/io/realworld/domain/aggregate/user/entity/User.java index 0d03de3..1dc54d3 100644 --- a/src/main/java/com/io/realworld/domain/aggregate/user/entity/User.java +++ b/src/main/java/com/io/realworld/domain/aggregate/user/entity/User.java @@ -83,4 +83,8 @@ public class User implements UserDetails { this.bio = userUpdate.getBio(); this.image = userUpdate.getImage(); } + + public void changePassword(String password) { + this.password = password; + } } diff --git a/src/main/java/com/io/realworld/domain/aggregate/user/repository/UserRepository.java b/src/main/java/com/io/realworld/domain/aggregate/user/repository/UserRepository.java index c429445..7a55dab 100644 --- a/src/main/java/com/io/realworld/domain/aggregate/user/repository/UserRepository.java +++ b/src/main/java/com/io/realworld/domain/aggregate/user/repository/UserRepository.java @@ -4,6 +4,7 @@ import com.io.realworld.domain.aggregate.user.entity.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; +import java.util.Collection; import java.util.List; import java.util.Optional; @@ -16,4 +17,6 @@ public interface UserRepository extends JpaRepository { Optional findByUsername(String username); List findAll(); + + List findAllByUsername(String username); } 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 41fc717..085cd2b 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 @@ -80,6 +80,16 @@ public class UserServiceImpl implements UserService { .findAny().ifPresent(found -> new CustomException(Error.DUPLICATE_EMAIL)); user.changeEmail(userUpdate.getEmail()); } + + if(userUpdate.getUsername() != null){ + userRepository.findAllByUsername(userUpdate.getUsername()) + .stream().filter(found -> !found.getId().equals(userRepository.findById(user.getId()))) + .findAny().ifPresent(found -> new CustomException(Error.DUPLICATE_EMAIL)); + user.changeUsername(userUpdate.getUsername()); + } + if(userUpdate.getPassword() != null){ + user.changePassword(madeHash(userUpdate.getPassword())); + } userUpdate.setId(user.getId()); user.update(userUpdate); return convertUser(userRepository.save(user)); diff --git a/src/vite-frontend/src/router/index.ts b/src/vite-frontend/src/router/index.ts index 7664475..ae26b96 100644 --- a/src/vite-frontend/src/router/index.ts +++ b/src/vite-frontend/src/router/index.ts @@ -27,6 +27,11 @@ const routes = [ name: "Article", component: () => import(/* webpackChunkName "inputTag" */ '@/views/TheArticle.vue') }, + { + path: "/@:username", + name: "Profile", + component: () => import(/* webpackChunkName "inputTag" */ '@/views/TheProfile.vue') + } ]; const router = createRouter({ diff --git a/src/vite-frontend/src/views/TheProfile.vue b/src/vite-frontend/src/views/TheProfile.vue new file mode 100644 index 0000000..cafd739 --- /dev/null +++ b/src/vite-frontend/src/views/TheProfile.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/src/vite-frontend/src/views/TheRegister.vue b/src/vite-frontend/src/views/TheRegister.vue index fd85479..24d15ad 100644 --- a/src/vite-frontend/src/views/TheRegister.vue +++ b/src/vite-frontend/src/views/TheRegister.vue @@ -87,7 +87,6 @@ export default { router.push("/"); }) .catch(error =>{ - console.log(error); const code = error.response.data.errors.code; if(code == "DUPLICATE_EMAIL_USERNAME"){ showEmailUsernameError(); diff --git a/src/vite-frontend/src/views/TheSetting.vue b/src/vite-frontend/src/views/TheSetting.vue index 0f7fafb..44bdb40 100644 --- a/src/vite-frontend/src/views/TheSetting.vue +++ b/src/vite-frontend/src/views/TheSetting.vue @@ -10,22 +10,22 @@
- +
- +
- +
- +
- +
-
@@ -38,8 +38,69 @@