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
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue