feat #467: separate column sensitivity policies

This commit is contained in:
devmrko
2026-06-25 22:36:33 +09:00
parent d6c7533edd
commit 4961083f06
18 changed files with 386 additions and 43 deletions

View File

@@ -4,6 +4,7 @@ import com.cloudhandson.vpdbackoffice.domain.protectedobject.ProtectedObjectCrea
import com.cloudhandson.vpdbackoffice.service.AppException;
import com.cloudhandson.vpdbackoffice.service.OrdsMetadataService;
import com.cloudhandson.vpdbackoffice.service.ProtectedObjectService;
import java.util.stream.Collectors;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -28,8 +29,14 @@ public class ProtectedObjectController {
@GetMapping("/objects")
public String objects(Model model) {
model.addAttribute("objects", protectedObjectService.findEnabled());
var objects = protectedObjectService.findEnabled();
model.addAttribute("objects", objects);
model.addAttribute("dbObjects", protectedObjectService.findDatabaseObjects());
model.addAttribute("columnsByObject", objects.stream()
.collect(Collectors.toMap(
object -> object.objectId(),
object -> protectedObjectService.findColumns(object.objectId())
)));
return "objects";
}
@@ -65,6 +72,22 @@ public class ProtectedObjectController {
return "redirect:/objects";
}
@PostMapping("/objects/column-policy")
public String updateColumnPolicy(
@RequestParam long columnId,
@RequestParam String sensitivityLevel,
@RequestParam String redactionMethod,
RedirectAttributes redirectAttributes
) {
try {
protectedObjectService.updateColumnPolicy(columnId, sensitivityLevel, redactionMethod);
redirectAttributes.addFlashAttribute("message", "컬럼 민감도/마스킹 정책을 수정했습니다.");
} catch (AppException exception) {
redirectAttributes.addFlashAttribute("errorMessage", exception.getMessage());
}
return "redirect:/objects";
}
@PostMapping("/objects/ords-handler")
public String createOrdsHandler(@RequestParam long objectId, RedirectAttributes redirectAttributes) {
try {

View File

@@ -27,13 +27,25 @@ public class RoleController {
public String create(
@RequestParam String roleName,
@RequestParam(required = false) String description,
@RequestParam(defaultValue = "PUBLIC") String maxSensitivityLevel,
RedirectAttributes redirectAttributes
) {
permissionService.createRole(roleName, description);
permissionService.createRole(roleName, description, maxSensitivityLevel);
redirectAttributes.addFlashAttribute("message", "역할을 추가했습니다.");
return "redirect:/roles";
}
@PostMapping("/roles/max-sensitivity")
public String updateMaxSensitivity(
@RequestParam long roleId,
@RequestParam String maxSensitivityLevel,
RedirectAttributes redirectAttributes
) {
permissionService.updateRoleMaxSensitivity(roleId, maxSensitivityLevel);
redirectAttributes.addFlashAttribute("message", "역할 민감도 허용 상한을 수정했습니다.");
return "redirect:/roles";
}
@PostMapping("/roles/delete")
public String delete(@RequestParam long roleId, RedirectAttributes redirectAttributes) {
permissionService.deleteRole(roleId);