72.4 User service implementation - Refactored UserDto to use Role instead of String (#8)
This commit is contained in:
@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import net.shyshkin.study.fullstack.supportportal.backend.domain.Role;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ -15,7 +16,7 @@ public class UserDto {
|
|||||||
private String lastName;
|
private String lastName;
|
||||||
private String username;
|
private String username;
|
||||||
private String email;
|
private String email;
|
||||||
private String role;
|
private Role role;
|
||||||
private boolean isNonLocked;
|
private boolean isNonLocked;
|
||||||
private boolean isActive;
|
private boolean isActive;
|
||||||
private MultipartFile profileImage;
|
private MultipartFile profileImage;
|
||||||
|
|||||||
@ -13,6 +13,8 @@ public interface UserMapper {
|
|||||||
@Mapping(target = "isNotLocked", source = "nonLocked")
|
@Mapping(target = "isNotLocked", source = "nonLocked")
|
||||||
@Mapping(target = "isActive", source = "active")
|
@Mapping(target = "isActive", source = "active")
|
||||||
@Mapping(target = "joinDate", expression = "java( LocalDateTime.now() )")
|
@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);
|
User toEntity(UserDto userDto);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -76,7 +76,7 @@ public class UserServiceImpl implements UserService {
|
|||||||
.username(username)
|
.username(username)
|
||||||
.isActive(true)
|
.isActive(true)
|
||||||
.isNonLocked(true)
|
.isNonLocked(true)
|
||||||
.role(defaultRole.name())
|
.role(defaultRole)
|
||||||
.build();
|
.build();
|
||||||
return addNewUser(newUserDto);
|
return addNewUser(newUserDto);
|
||||||
}
|
}
|
||||||
@ -126,15 +126,11 @@ public class UserServiceImpl implements UserService {
|
|||||||
String rawPassword = generatePassword();
|
String rawPassword = generatePassword();
|
||||||
String encodedPassword = passwordEncoder.encode(rawPassword);
|
String encodedPassword = passwordEncoder.encode(rawPassword);
|
||||||
|
|
||||||
Role role = Role.valueOf(userDto.getRole());
|
|
||||||
|
|
||||||
User newUser = userMapper.toEntity(userDto);
|
User newUser = userMapper.toEntity(userDto);
|
||||||
|
|
||||||
newUser.setPassword(encodedPassword);
|
newUser.setPassword(encodedPassword);
|
||||||
newUser.setUserId(generateUserId());
|
newUser.setUserId(generateUserId());
|
||||||
newUser.setProfileImageUrl(getTemporaryProfileImageUrl(username));
|
newUser.setProfileImageUrl(getTemporaryProfileImageUrl(username));
|
||||||
newUser.setRole(role.name());
|
|
||||||
newUser.setAuthorities(role.getAuthorities());
|
|
||||||
|
|
||||||
userRepository.save(newUser);
|
userRepository.save(newUser);
|
||||||
saveProfileImage(newUser, userDto.getProfileImage());
|
saveProfileImage(newUser, userDto.getProfileImage());
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package net.shyshkin.study.fullstack.supportportal.backend.common;
|
package net.shyshkin.study.fullstack.supportportal.backend.common;
|
||||||
|
|
||||||
import com.github.javafaker.Faker;
|
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.User;
|
||||||
import net.shyshkin.study.fullstack.supportportal.backend.domain.dto.UserDto;
|
import net.shyshkin.study.fullstack.supportportal.backend.domain.dto.UserDto;
|
||||||
import net.shyshkin.study.fullstack.supportportal.backend.repository.UserRepository;
|
import net.shyshkin.study.fullstack.supportportal.backend.repository.UserRepository;
|
||||||
@ -49,7 +50,7 @@ public abstract class BaseUserTest {
|
|||||||
.username(FAKER.name().username())
|
.username(FAKER.name().username())
|
||||||
.isActive(true)
|
.isActive(true)
|
||||||
.isNonLocked(true)
|
.isNonLocked(true)
|
||||||
.role("ROLE_ADMIN")
|
.role(Role.ROLE_ADMIN)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package net.shyshkin.study.fullstack.supportportal.backend.service;
|
|||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.shyshkin.study.fullstack.supportportal.backend.common.BaseUserTest;
|
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.User;
|
||||||
import net.shyshkin.study.fullstack.supportportal.backend.domain.dto.UserDto;
|
import net.shyshkin.study.fullstack.supportportal.backend.domain.dto.UserDto;
|
||||||
import org.assertj.core.api.ThrowableAssert;
|
import org.assertj.core.api.ThrowableAssert;
|
||||||
@ -92,10 +93,10 @@ class UserServiceTest extends BaseUserTest {
|
|||||||
|
|
||||||
//given
|
//given
|
||||||
UserDto randomUserDto = createRandomUserDto();
|
UserDto randomUserDto = createRandomUserDto();
|
||||||
randomUserDto.setRole("FAKE_ROLE");
|
|
||||||
|
|
||||||
//when
|
//when
|
||||||
ThrowableAssert.ThrowingCallable execution = () -> {
|
ThrowableAssert.ThrowingCallable execution = () -> {
|
||||||
|
randomUserDto.setRole(Role.valueOf("FAKE_ROLE"));
|
||||||
User user = userService.addNewUser(randomUserDto);
|
User user = userService.addNewUser(randomUserDto);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user