From 9c2bcafef9ec8da6db553d50eee4f0c5b44e42d8 Mon Sep 17 00:00:00 2001 From: Art Date: Wed, 22 Sep 2021 16:07:23 +0300 Subject: [PATCH] 188. Delete user image on delete user (#28 Section 28: Enhancement) --- .../backend/controller/UserResource.java | 12 +++--------- .../backend/service/UserServiceImpl.java | 13 +++++++++++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResource.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResource.java index d035e7d..8a071fc 100644 --- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResource.java +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResource.java @@ -110,23 +110,17 @@ public class UserResource { @GetMapping(path = "{username}/image/profile", produces = MediaType.IMAGE_JPEG_VALUE) public byte[] getProfileImage(@PathVariable String username) throws IOException { - byte[] profileImage = userService.getProfileImage(username); - log.debug("File size: {}", profileImage.length); - return profileImage; + return userService.getProfileImage(username); } @GetMapping(path = "image/profile/{userId}/{filename}", produces = MediaType.IMAGE_JPEG_VALUE) public byte[] getProfileImageByUserId(@PathVariable String userId, @PathVariable String filename) throws IOException { - byte[] profileImage = userService.getImageByUserId(userId, filename); - log.debug("File size: {}", profileImage.length); - return profileImage; + return userService.getImageByUserId(userId, filename); } @GetMapping(path = "image/profile/{userId}", produces = MediaType.IMAGE_JPEG_VALUE) public byte[] getDefaultProfileImage(@PathVariable String userId) { - byte[] profileImage = userService.getDefaultProfileImage(userId); - log.debug("File size: {}", profileImage.length); - return profileImage; + return userService.getDefaultProfileImage(userId); } private void authenticate(String username, String password) { 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 be029df..7e90efb 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 @@ -23,6 +23,7 @@ import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.util.FileSystemUtils; import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.support.ServletUriComponentsBuilder; @@ -194,6 +195,16 @@ public class UserServiceImpl implements UserService { } } + private void deleteProfileImageFolder(User user) { + + Path userFolder = Paths.get(USER_FOLDER, user.getUserId()); + try { + FileSystemUtils.deleteRecursively(userFolder); + } catch (IOException exception) { + log.error("Can't delete folder", exception); + } + } + @Override public User updateUser(String username, UserDto userDto) { @@ -222,6 +233,8 @@ public class UserServiceImpl implements UserService { User userToBeDeleted = userRepository .findByUserId(userId) .orElseThrow(() -> new UserNotFoundException("User was not found")); + + deleteProfileImageFolder(userToBeDeleted); userRepository.delete(userToBeDeleted); }