From 83198982e395294403696d89c3dcfcb9fbb2f5b0 Mon Sep 17 00:00:00 2001 From: Art Date: Thu, 9 Sep 2021 15:10:59 +0300 Subject: [PATCH] 72.4 User service implementation - Refactored UserDto to use Role instead of String (#8) --- .../fullstack/supportportal/backend/domain/dto/UserDto.java | 3 ++- .../fullstack/supportportal/backend/mapper/UserMapper.java | 2 ++ .../supportportal/backend/service/UserServiceImpl.java | 6 +----- .../supportportal/backend/common/BaseUserTest.java | 3 ++- .../supportportal/backend/service/UserServiceTest.java | 3 ++- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/domain/dto/UserDto.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/domain/dto/UserDto.java index e61b6fc..a526ae8 100644 --- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/domain/dto/UserDto.java +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/domain/dto/UserDto.java @@ -4,6 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import net.shyshkin.study.fullstack.supportportal.backend.domain.Role; import org.springframework.web.multipart.MultipartFile; @Data @@ -15,7 +16,7 @@ public class UserDto { private String lastName; private String username; private String email; - private String role; + private Role role; private boolean isNonLocked; private boolean isActive; private MultipartFile profileImage; diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/mapper/UserMapper.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/mapper/UserMapper.java index bc3c54f..6f790b1 100644 --- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/mapper/UserMapper.java +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/mapper/UserMapper.java @@ -13,6 +13,8 @@ public interface UserMapper { @Mapping(target = "isNotLocked", source = "nonLocked") @Mapping(target = "isActive", source = "active") @Mapping(target = "joinDate", expression = "java( LocalDateTime.now() )") + @Mapping(target = "role", source = "role", resultType = String.class) + @Mapping(target = "authorities", source = "role.authorities") User toEntity(UserDto userDto); } diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java index aa5f236..8ad105d 100644 --- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java @@ -76,7 +76,7 @@ public class UserServiceImpl implements UserService { .username(username) .isActive(true) .isNonLocked(true) - .role(defaultRole.name()) + .role(defaultRole) .build(); return addNewUser(newUserDto); } @@ -126,15 +126,11 @@ public class UserServiceImpl implements UserService { String rawPassword = generatePassword(); String encodedPassword = passwordEncoder.encode(rawPassword); - Role role = Role.valueOf(userDto.getRole()); - User newUser = userMapper.toEntity(userDto); newUser.setPassword(encodedPassword); newUser.setUserId(generateUserId()); newUser.setProfileImageUrl(getTemporaryProfileImageUrl(username)); - newUser.setRole(role.name()); - newUser.setAuthorities(role.getAuthorities()); userRepository.save(newUser); saveProfileImage(newUser, userDto.getProfileImage()); diff --git a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/common/BaseUserTest.java b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/common/BaseUserTest.java index 58285b6..9b9d20a 100644 --- a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/common/BaseUserTest.java +++ b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/common/BaseUserTest.java @@ -1,6 +1,7 @@ package net.shyshkin.study.fullstack.supportportal.backend.common; import com.github.javafaker.Faker; +import net.shyshkin.study.fullstack.supportportal.backend.domain.Role; import net.shyshkin.study.fullstack.supportportal.backend.domain.User; import net.shyshkin.study.fullstack.supportportal.backend.domain.dto.UserDto; import net.shyshkin.study.fullstack.supportportal.backend.repository.UserRepository; @@ -49,7 +50,7 @@ public abstract class BaseUserTest { .username(FAKER.name().username()) .isActive(true) .isNonLocked(true) - .role("ROLE_ADMIN") + .role(Role.ROLE_ADMIN) .build(); } diff --git a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceTest.java b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceTest.java index 47b06ab..3c3a9da 100644 --- a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceTest.java +++ b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceTest.java @@ -2,6 +2,7 @@ package net.shyshkin.study.fullstack.supportportal.backend.service; import lombok.extern.slf4j.Slf4j; import net.shyshkin.study.fullstack.supportportal.backend.common.BaseUserTest; +import net.shyshkin.study.fullstack.supportportal.backend.domain.Role; import net.shyshkin.study.fullstack.supportportal.backend.domain.User; import net.shyshkin.study.fullstack.supportportal.backend.domain.dto.UserDto; import org.assertj.core.api.ThrowableAssert; @@ -92,10 +93,10 @@ class UserServiceTest extends BaseUserTest { //given UserDto randomUserDto = createRandomUserDto(); - randomUserDto.setRole("FAKE_ROLE"); //when ThrowableAssert.ThrowingCallable execution = () -> { + randomUserDto.setRole(Role.valueOf("FAKE_ROLE")); User user = userService.addNewUser(randomUserDto); };