feat: add DDS protection status dashboard
This commit is contained in:
@@ -1,55 +1,48 @@
|
||||
package com.cloudhandson.ddsbackoffice.web;
|
||||
|
||||
import com.cloudhandson.ddsbackoffice.config.DdsProperties;
|
||||
import com.cloudhandson.ddsbackoffice.service.DdsQueryService;
|
||||
import com.cloudhandson.vpdbackoffice.domain.permission.PermissionView;
|
||||
import com.cloudhandson.vpdbackoffice.service.PermissionService;
|
||||
import java.util.List;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
import com.cloudhandson.ddsbackoffice.service.DdsProtectionStatusService;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.servlet.view.RedirectView;
|
||||
|
||||
/** DDS equivalent of the VPD protection-connection step. */
|
||||
/** DDS protection status, deliberately separate from the legacy VPD route. */
|
||||
@Controller
|
||||
public class DdsProtectionController {
|
||||
|
||||
private static final String MANAGEMENT_OBJECT = "CB_VECTOR_SEARCH_DOCUMENTS";
|
||||
|
||||
private final PermissionService permissionService;
|
||||
private final DdsProperties properties;
|
||||
private final DdsQueryService queryService;
|
||||
private final DdsProtectionStatusService protectionStatusService;
|
||||
|
||||
public DdsProtectionController(
|
||||
PermissionService permissionService,
|
||||
DdsProperties properties,
|
||||
DdsQueryService queryService
|
||||
DdsProtectionStatusService protectionStatusService
|
||||
) {
|
||||
this.permissionService = permissionService;
|
||||
this.properties = properties;
|
||||
this.queryService = queryService;
|
||||
this.protectionStatusService = protectionStatusService;
|
||||
}
|
||||
|
||||
@GetMapping("/vpd-policies")
|
||||
@GetMapping("/dds-protection")
|
||||
public String page(Model model) {
|
||||
model.addAttribute("ddsVectorObject", properties.vectorObject());
|
||||
model.addAttribute("managementObject", MANAGEMENT_OBJECT);
|
||||
model.addAttribute("ddsUsers", queryService.users());
|
||||
try {
|
||||
List<PermissionView> permissions = permissionService.findPermissionViews().stream()
|
||||
.filter(permission -> MANAGEMENT_OBJECT.equalsIgnoreCase(permission.objectName()))
|
||||
.toList();
|
||||
model.addAttribute("permissions", permissions);
|
||||
} catch (DataAccessException exception) {
|
||||
model.addAttribute("permissions", List.of());
|
||||
model.addAttribute("runtimeError", exception.getMessage());
|
||||
}
|
||||
model.addAttribute("protection", protectionStatusService.overview());
|
||||
return "vpd-policies";
|
||||
}
|
||||
|
||||
@GetMapping("/dds-protection/direct")
|
||||
public String directComparison(Model model) {
|
||||
model.addAttribute("directPaths", protectionStatusService.directComparison());
|
||||
return "fragments/dds-protection-direct :: directComparison";
|
||||
}
|
||||
|
||||
/** Existing bookmarks resolve to the DDS canonical route without retaining VPD in the UI. */
|
||||
@GetMapping("/vpd-policies")
|
||||
public RedirectView legacyPolicies() {
|
||||
return new RedirectView("/dds-protection");
|
||||
}
|
||||
|
||||
@GetMapping("/vpd-filter-policies")
|
||||
public RedirectView filterPolicies() {
|
||||
return new RedirectView("/vpd-policies");
|
||||
return new RedirectView("/dds-protection");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user