Refactor user permissions to dedicated service and controller

Moved user permission management logic from UserService and UserController to new PermissionService and PermissionController classes. This improves separation of concerns and code organization. Also removed unused findByEmail method from UserRepository.
dev-pending-01-01-2026
Naeem Ullah 4 weeks ago
parent 5bd79acda5
commit cf224e3f85

@ -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<UserDTOs.UserResponse> saveUserPermissions(
@RequestBody PermissionDTO permissionDTO) {
UserDTOs.UserResponse response = permissionService.saveUserPermissions(permissionDTO);
return new ResponseEntity<>(response, HttpStatus.OK);
}
@GetMapping(UserManagementURI.GET_USER_PERMISSIONS)
public ResponseEntity<PermissionDTO> getUserPermissions(@RequestParam String userId) {
PermissionDTO dto = permissionService.getUserPermissions(userId);
return new ResponseEntity<>(dto, HttpStatus.OK);
}
@PutMapping(UserManagementURI.UPDATE_USER_PERMISSIONS)
public ResponseEntity<UserDTOs.UserResponse> updateUserPermissions(
@RequestBody PermissionDTO permissionDTO) {
UserDTOs.UserResponse response = permissionService.updateUserPermissions(permissionDTO);
return new ResponseEntity<>(response, HttpStatus.OK);
}
}

@ -1,7 +1,6 @@
package com.mfsys.aconnect.usermanagement.controller; package com.mfsys.aconnect.usermanagement.controller;
import com.mfsys.aconnect.usermanagement.constant.UserManagementURI; 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.dto.UserDTOs;
import com.mfsys.aconnect.usermanagement.service.UserService; import com.mfsys.aconnect.usermanagement.service.UserService;
import jakarta.persistence.EntityNotFoundException; import jakarta.persistence.EntityNotFoundException;
@ -63,26 +62,5 @@ public class UserController {
} }
} }
@PostMapping(UserManagementURI.SAVE_USER_PERMISSIONS)
public ResponseEntity<UserDTOs.UserResponse> saveUserPermissions(
@RequestBody PermissionDTO permissionDTO) {
UserDTOs.UserResponse response = userService.saveUserPermissions(permissionDTO);
return new ResponseEntity<>(response, HttpStatus.OK);
}
@GetMapping(UserManagementURI.GET_USER_PERMISSIONS)
public ResponseEntity<PermissionDTO> getUserPermissions(@RequestParam String userId) {
PermissionDTO dto = userService.getUserPermissions(userId);
return new ResponseEntity<>(dto, HttpStatus.OK);
}
@PutMapping(UserManagementURI.UPDATE_USER_PERMISSIONS)
public ResponseEntity<UserDTOs.UserResponse> updateUserPermissions(
@RequestBody PermissionDTO permissionDTO) {
UserDTOs.UserResponse response = userService.updateUserPermissions(permissionDTO);
return new ResponseEntity<>(response, HttpStatus.OK);
}
} }

@ -9,5 +9,4 @@ import java.util.Optional;
@Repository @Repository
public interface UserRepository extends JpaRepository<User, String> { public interface UserRepository extends JpaRepository<User, String> {
Optional<User> findByUserIdAndIsActiveTrue(String userId); Optional<User> findByUserIdAndIsActiveTrue(String userId);
Optional<User> findByEmail(String email);
} }

@ -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;
}
}

@ -13,10 +13,6 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/**
* Service class for handling User-related business logic.
* It uses the UserRepository to interact with the database.
*/
@Service @Service
public class UserService { public class UserService {
@ -89,44 +85,4 @@ public class UserService {
return response; 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);
}
} }

Loading…
Cancel
Save