# Redmine #494 - 삭제 영향도와 확인 절차 설계 ## 프로젝트 개요 VPD Backoffice는 Oracle Database VPD/ORDS 기능을 백오피스 권한 테이블로 제어하는 Spring Boot 관리 도구다. 사용자는 DB schema user가 아니라 Bearer Token으로 식별되는 application user이며, 사용자/그룹/역할/권한 테이블의 조합이 VPD policy function과 redaction 판단에 사용된다. ## 목표 권한, 역할, 그룹 관련 삭제/해제/비활성화 작업 전에 영향 범위를 보여주고, 사용자가 영향 확인을 명시한 경우에만 처리한다. ## 현재 문제 - 역할 삭제 버튼은 연결 사용자, 그룹, 권한이 남아 있어도 영향 범위를 보여주지 않는다. - 보조 스키마 생성 DDL에는 FK가 없어 연결이 남은 역할을 삭제하면 고아 매핑/권한이 생길 수 있다. - 권한 삭제 시 해당 역할의 TABLE/VIEW 접근이 사라지고 마지막 권한이면 보호 객체가 비활성화될 수 있지만 화면에서 강조하지 않는다. - 그룹 비활성화/그룹 사용자 해제/그룹 역할 해제는 VPD effective role 결과를 바꾸지만 확인 절차가 약하다. - 삭제 검증 실패가 전역 오류 화면으로 빠져 사용자가 원래 화면에서 바로 조치하기 어렵다. ## 설계 - 역할 목록에 삭제 영향 요약을 표시한다. - 직접 사용자 - 연결 그룹 - 영향 사용자 - 권한 수와 보호 객체 - 역할 삭제는 서버에서 연결 사용자/그룹/권한이 하나라도 있으면 차단한다. - 삭제 전에 사용자 역할, 그룹 역할, 권한을 먼저 해제해야 한다. - 연결이 없는 역할도 영향 확인 체크가 있어야 삭제된다. - 권한 목록에 삭제 영향 요약을 표시한다. - 역할이 잃는 TABLE/VIEW 권한 - 마지막 권한 삭제 시 보호 객체 비활성화 가능성 - 영향 확인 체크가 없으면 서버에서 차단한다. - 그룹 화면에 비활성화/해제 영향 요약을 표시한다. - 그룹 비활성화는 활성 그룹을 통해 상속되던 역할을 VPD에서 제외한다. - 그룹 사용자 해제는 해당 사용자가 그 그룹 역할을 잃는다. - 그룹 역할 해제는 그룹 사용자 전체가 해당 역할 권한을 잃는다. - 영향 확인 체크가 없으면 서버에서 차단한다. - 삭제/해제 차단 메시지는 전역 오류 페이지 대신 원래 화면의 error alert로 보여준다. ## 완료 기준 - 역할 목록에서 삭제 영향이 보이고 연결이 있는 역할 삭제는 차단된다. - 권한 목록에서 삭제 영향과 마지막 권한 경고가 보인다. - 권한 삭제는 영향 확인 체크 없이는 서버에서 실패한다. - 그룹 비활성화/사용자 해제/역할 해제는 영향 확인 체크를 요구한다. - 실패 메시지는 원래 화면 상단에서 확인된다. - 모바일 화면에서 가로 body overflow가 없다. ## 검증 - `mvn test` - Playwright: - `/roles`, `/permissions`, `/groups` desktop/mobile 렌더링 - 영향 확인 UI 노출 확인 - 확인 체크 없는 권한 삭제 시 error alert 확인 - 모바일 body overflow 없음