diff --git a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/controller/PermissionController.java b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/controller/PermissionController.java new file mode 100644 index 0000000..d8cf62a --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/controller/PermissionController.java @@ -0,0 +1,41 @@ +package com.mfsys.aconnect.usermanagement.controller; + +import com.mfsys.aconnect.usermanagement.constant.UserManagementURI; +import com.mfsys.aconnect.usermanagement.dto.PermissionDTO; +import com.mfsys.aconnect.usermanagement.dto.UserDTOs; +import com.mfsys.aconnect.usermanagement.service.PermissionService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping(UserManagementURI.USER) +public class PermissionController { + private final PermissionService permissionService; + public PermissionController(PermissionService permissionService) { + this.permissionService = permissionService; + } + + @PostMapping(UserManagementURI.SAVE_USER_PERMISSIONS) + public ResponseEntity saveUserPermissions( + @RequestBody PermissionDTO permissionDTO) { + + UserDTOs.UserResponse response = permissionService.saveUserPermissions(permissionDTO); + return new ResponseEntity<>(response, HttpStatus.OK); + } + + @GetMapping(UserManagementURI.GET_USER_PERMISSIONS) + public ResponseEntity getUserPermissions(@RequestParam String userId) { + PermissionDTO dto = permissionService.getUserPermissions(userId); + return new ResponseEntity<>(dto, HttpStatus.OK); + } + + @PutMapping(UserManagementURI.UPDATE_USER_PERMISSIONS) + public ResponseEntity updateUserPermissions( + @RequestBody PermissionDTO permissionDTO) { + + UserDTOs.UserResponse response = permissionService.updateUserPermissions(permissionDTO); + return new ResponseEntity<>(response, HttpStatus.OK); + } + +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/controller/UserController.java b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/controller/UserController.java index e04bf72..f138afa 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/controller/UserController.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/controller/UserController.java @@ -1,7 +1,6 @@ package com.mfsys.aconnect.usermanagement.controller; import com.mfsys.aconnect.usermanagement.constant.UserManagementURI; -import com.mfsys.aconnect.usermanagement.dto.PermissionDTO; import com.mfsys.aconnect.usermanagement.dto.UserDTOs; import com.mfsys.aconnect.usermanagement.service.UserService; import jakarta.persistence.EntityNotFoundException; @@ -63,26 +62,5 @@ public class UserController { } } - @PostMapping(UserManagementURI.SAVE_USER_PERMISSIONS) - public ResponseEntity saveUserPermissions( - @RequestBody PermissionDTO permissionDTO) { - - UserDTOs.UserResponse response = userService.saveUserPermissions(permissionDTO); - return new ResponseEntity<>(response, HttpStatus.OK); - } - - @GetMapping(UserManagementURI.GET_USER_PERMISSIONS) - public ResponseEntity getUserPermissions(@RequestParam String userId) { - PermissionDTO dto = userService.getUserPermissions(userId); - return new ResponseEntity<>(dto, HttpStatus.OK); - } - - @PutMapping(UserManagementURI.UPDATE_USER_PERMISSIONS) - public ResponseEntity updateUserPermissions( - @RequestBody PermissionDTO permissionDTO) { - - UserDTOs.UserResponse response = userService.updateUserPermissions(permissionDTO); - return new ResponseEntity<>(response, HttpStatus.OK); - } } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/repository/UserRepository.java b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/repository/UserRepository.java index da37d7c..a379e55 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/repository/UserRepository.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/repository/UserRepository.java @@ -9,5 +9,4 @@ import java.util.Optional; @Repository public interface UserRepository extends JpaRepository { Optional findByUserIdAndIsActiveTrue(String userId); - Optional findByEmail(String email); } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/PermissionService.java b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/PermissionService.java new file mode 100644 index 0000000..0e3045a --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/PermissionService.java @@ -0,0 +1,75 @@ +package com.mfsys.aconnect.usermanagement.service; + +import com.mfsys.aconnect.usermanagement.dto.PermissionDTO; +import com.mfsys.aconnect.usermanagement.dto.UserDTOs; +import com.mfsys.aconnect.usermanagement.model.User; +import com.mfsys.aconnect.usermanagement.repository.UserRepository; +import com.mfsys.common.configuration.service.PasswordEncryptionService; +import jakarta.persistence.EntityNotFoundException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +public class PermissionService { + private final UserRepository userRepository; + private final PasswordEncryptionService passwordEncryptionService; + + public PermissionService(UserRepository userRepository, PasswordEncryptionService passwordEncryptionService) { + this.userRepository = userRepository; + this.passwordEncryptionService = passwordEncryptionService; + } + + + @Transactional + public UserDTOs.UserResponse saveUserPermissions(PermissionDTO permissionDTO) { + User user = userRepository.findById(permissionDTO.getUserId()) + .orElseThrow(() -> new EntityNotFoundException("User not found with ID: " + permissionDTO.getUserId())); + + // Convert list of permissions to comma-separated string + String permissions = String.join(",", permissionDTO.getPermissions()); + user.setPermissions(permissions); + User updatedUser = userRepository.save(user); + + return mapToResponseDTO(updatedUser); + } + + public PermissionDTO getUserPermissions(String userId) { + User user = userRepository.findById(userId) + .orElseThrow(() -> new EntityNotFoundException("User not found with ID: " + userId)); + + PermissionDTO dto = new PermissionDTO(); + dto.setUserId(userId); + if (user.getPermissions() != null && !user.getPermissions().isEmpty()) { + dto.setPermissions((user.getPermissions())); + } + return dto; + } + + @Transactional + public UserDTOs.UserResponse updateUserPermissions(PermissionDTO permissionDTO) { + + User user = userRepository.findById(permissionDTO.getUserId()) + .orElseThrow(() -> + new EntityNotFoundException("User not found with ID: " + permissionDTO.getUserId()) + ); + + String permissions = String.join(",", permissionDTO.getPermissions()); + user.setPermissions(permissions); + + User updatedUser = userRepository.save(user); + return mapToResponseDTO(updatedUser); + } + + private UserDTOs.UserResponse mapToResponseDTO(User user) { + UserDTOs.UserResponse response = new UserDTOs.UserResponse(); + response.setUserId(user.getUserId()); + response.setUserFullname(user.getUserFullname()); + response.setEmail(user.getEmail()); + response.setRole(user.getRole()); + response.setIsFirstLogin(user.getIsFirstLogin()); + response.setIsActive(user.getIsActive()); + response.setCreatedAt(user.getCreatedAt()); + response.setUpdatedAt(user.getUpdatedAt()); + return response; + } +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java index 25040f7..f5ad9eb 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java @@ -13,10 +13,6 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; -/** - * Service class for handling User-related business logic. - * It uses the UserRepository to interact with the database. - */ @Service public class UserService { @@ -89,44 +85,4 @@ public class UserService { return response; } - @Transactional - public UserDTOs.UserResponse saveUserPermissions(PermissionDTO permissionDTO) { - User user = userRepository.findById(permissionDTO.getUserId()) - .orElseThrow(() -> new EntityNotFoundException("User not found with ID: " + permissionDTO.getUserId())); - - // Convert list of permissions to comma-separated string - String permissions = String.join(",", permissionDTO.getPermissions()); - user.setPermissions(permissions); - User updatedUser = userRepository.save(user); - - return mapToResponseDTO(updatedUser); - } - - public PermissionDTO getUserPermissions(String userId) { - User user = userRepository.findById(userId) - .orElseThrow(() -> new EntityNotFoundException("User not found with ID: " + userId)); - - PermissionDTO dto = new PermissionDTO(); - dto.setUserId(userId); - if (user.getPermissions() != null && !user.getPermissions().isEmpty()) { - dto.setPermissions((user.getPermissions())); - } - return dto; - } - - @Transactional - public UserDTOs.UserResponse updateUserPermissions(PermissionDTO permissionDTO) { - - User user = userRepository.findById(permissionDTO.getUserId()) - .orElseThrow(() -> - new EntityNotFoundException("User not found with ID: " + permissionDTO.getUserId()) - ); - - String permissions = String.join(",", permissionDTO.getPermissions()); - user.setPermissions(permissions); - - User updatedUser = userRepository.save(user); - return mapToResponseDTO(updatedUser); - } - }