리소스 가시성(READ/HIDE) 단일 차원에서 리소스 × 오퍼레이션(RCUD) 2차원 권한 모델로 전환하여 세밀한 CRUD 권한 제어 지원. - DB: AUTH_PERM에 OPER_CD 컬럼 추가, 마이그레이션 004 작성 - DB: AUTH_PERM_TREE 리소스 트리 테이블 추가 (마이그레이션 003) - Backend: permResolver 2차원 권한 해석 엔진 (상속 + 오퍼레이션) - Backend: requirePermission 미들웨어 신규 (리소스×오퍼레이션 검증) - Backend: authService permissions → Record<string, string[]> 반환 - Backend: roleService/roleRouter OPER_CD 지원 API - Backend: Helmet CORP 설정 (sendBeacon cross-origin 허용) - Frontend: authStore.hasPermission(resource, operation?) 하위 호환 확장 - Frontend: PermissionsPanel 역할탭 + RCUD 4열 매트릭스 UI 전면 재작성 - Frontend: sendBeacon API_BASE_URL 절대경로 전환 - Docs: COMMON-GUIDE 권한 체계 + CRUD API 규칙 문서화 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
25 lines
1013 B
TypeScript
25 lines
1013 B
TypeScript
export const DEFAULT_ROLE_COLORS: Record<string, string> = {
|
|
ADMIN: 'var(--red)',
|
|
MANAGER: 'var(--orange)',
|
|
USER: 'var(--cyan)',
|
|
VIEWER: 'var(--t3)',
|
|
}
|
|
|
|
export const CUSTOM_ROLE_COLORS = [
|
|
'#a78bfa', '#34d399', '#f472b6', '#fbbf24', '#60a5fa', '#2dd4bf',
|
|
]
|
|
|
|
export function getRoleColor(code: string, index: number): string {
|
|
return DEFAULT_ROLE_COLORS[code] || CUSTOM_ROLE_COLORS[index % CUSTOM_ROLE_COLORS.length]
|
|
}
|
|
|
|
export const statusLabels: Record<string, { label: string; color: string; dot: string }> = {
|
|
PENDING: { label: '승인대기', color: 'text-yellow-400', dot: 'bg-yellow-400' },
|
|
ACTIVE: { label: '활성', color: 'text-green-400', dot: 'bg-green-400' },
|
|
LOCKED: { label: '잠김', color: 'text-red-400', dot: 'bg-red-400' },
|
|
INACTIVE: { label: '비활성', color: 'text-text-3', dot: 'bg-text-3' },
|
|
REJECTED: { label: '거절됨', color: 'text-red-300', dot: 'bg-red-300' },
|
|
}
|
|
|
|
// PERM_RESOURCES 제거됨 — GET /api/roles/perm-tree에서 동적 로드 (PermissionsPanel)
|