Skip to content

Feature/23 게층적 권한 적용하기#25

Merged
bagjuna merged 2 commits intomainfrom
feature/23-게층적-권한-적용하기
Oct 22, 2025

Hidden character warning

The head ref may contain hidden characters: "feature/23-\uac8c\uce35\uc801-\uad8c\ud55c-\uc801\uc6a9\ud558\uae30"
Merged

Feature/23 게층적 권한 적용하기#25
bagjuna merged 2 commits intomainfrom
feature/23-게층적-권한-적용하기

Conversation

@bagjuna
Copy link
Copy Markdown
Owner

@bagjuna bagjuna commented Oct 22, 2025

#️⃣ Issue Number

#23

📝 요약(Summary)

  • ROLE_ADMIN > ROLE_MANAGER
  • ROLE_ADMIN > ROLE_DBA
  • ROLE_MANAGER > ROLE_USER
  • ROLE_DBA > ROLE_USER

이미지

image

관계 알아보기

WITH RECURSIVE RoleInheritance (ancestor_role_name, descendant_role_name) AS (
-- 1. 앵커 멤버: 직접적인 부모-자식 관계
SELECT
PARENT.role_name AS ancestor_role_name,
CHILD.role_name AS descendant_role_name
FROM ROLE_HIERARCHY CHILD
JOIN ROLE_HIERARCHY PARENT
ON CHILD.parent_id = PARENT.id

UNION ALL

-- 2. 재귀 멤버: 간접적인 상속 관계까지 추적
SELECT
    RI.ancestor_role_name,
    GRAND_CHILD.role_name AS descendant_role_name
FROM RoleInheritance RI
         -- 여기서 일반적인 JOIN을 사용하여 스칼라 서브쿼리를 대체합니다.
         JOIN ROLE_HIERARCHY GRAND_PARENT ON GRAND_PARENT.role_name = RI.descendant_role_name
         JOIN ROLE_HIERARCHY GRAND_CHILD ON GRAND_CHILD.parent_id = GRAND_PARENT.id

)
SELECT * FROM RoleInheritance;

ancestor_role_name descendant_role_name
ROLE_ADMIN ROLE_MANAGER
ROLE_ADMIN ROLE_DBA
ROLE_MANAGER ROLE_USER
ROLE_DBA ROLE_USER
ROLE_ADMIN ROLE_USER
ROLE_ADMIN ROLE_USER

- ROLE_ADMIN > ROLE_MANAGER
- ROLE_ADMIN > ROLE_DBA
- ROLE_MANAGER > ROLE_USER
- ROLE_DBA > ROLE_USER

- 즉 ROLE_ADMIN 권한만 있어도 ROLE_DBA, ROLE_MANAGER, ROLE_USER역할을 모두 수행 할 수 있게 계층 구조를 변경
@bagjuna bagjuna linked an issue Oct 22, 2025 that may be closed by this pull request
@bagjuna bagjuna merged commit 89019c0 into main Oct 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE]: 게층적 권한 적용하기

1 participant