4.2 KiB
4.2 KiB
🔐 권한 관리 시스템 구현 작업
📅 작업 정보
- 시작일: 2025-01-10
- 최종 수정: 2025-01-10
- 상태: ✅ 완료
🎯 목표
- 직원관리 → 관리자 메뉴 하위 "사용자 관리"로 이동 및 명칭 변경
- 사용자 목록에 권한 체크박스 표시
- 권한관리 팝업으로 권한 CRUD
- 기존 하드코딩 admin 체크 → role 기반으로 전환
📌 권한 구조
| 권한코드 | 권한명 | 설명 |
|---|---|---|
| ROLE_USER | 일반사용자 | 기본 기능 (주간보고 작성/조회) |
| ROLE_MANAGER | 매니저 | 취합보고서 등 관리 기능 |
| ROLE_ADMIN | 관리자 | 모든 기능 + 시스템 관리 |
📋 Phase 목록
Phase 1: DB 스키마 생성
- 상태: ✅ 완료
- 파일:
backend/sql/create_role_tables.sql - 작업 내용:
- wr_role 테이블 생성
- wr_employee_role 테이블 생성
- 기본 권한 데이터 INSERT (ROLE_ADMIN, ROLE_MANAGER, ROLE_USER)
- 기존 coziny@gmail.com에 ROLE_ADMIN 부여
- ⚠️ DB 실행 필요:
psql -f backend/sql/create_role_tables.sql
Phase 2: 권한 CRUD API 구현
- 상태: ✅ 완료
- 파일:
backend/api/admin/role/ - 작업 내용:
- GET /api/admin/role/list - 권한 목록 조회
- POST /api/admin/role/create - 권한 생성
- PUT /api/admin/role/[id]/update - 권한 수정
- DELETE /api/admin/role/[id]/delete - 권한 삭제
- session.ts에 requireAdmin, requireManager, getUserRoles, hasRole 함수 추가
Phase 3: 사용자-권한 매핑 API 구현
- 상태: ✅ 완료
- 파일:
backend/api/admin/user/ - 작업 내용:
- GET /api/admin/user/list - 사용자 목록 (권한 포함)
- PUT /api/admin/user/[id]/roles - 사용자 권한 일괄 변경
- POST /api/admin/user/[id]/toggle-role - 개별 권한 토글
- GET /api/auth/current-user 수정 - roles 배열 추가
Phase 4: 메뉴 구조 변경
- 상태: ✅ 완료
- 파일:
frontend/components/layout/AppHeader.vue,frontend/composables/useAuth.ts - 작업 내용:
- 직원관리 메뉴 제거
- 관리자 메뉴 하위에 "사용자 관리" 추가
- isAdmin 로직을 role 기반으로 변경
- useAuth.ts에 hasRole(), isAdmin, isManager 추가
Phase 5: 사용자 관리 페이지 생성
- 상태: ✅ 완료
- 파일:
frontend/admin/user/index.vue - 작업 내용:
- 사용자 목록 테이블
- 권한 체크박스 컬럼들 (동적 생성)
- 체크박스 클릭 시 권한 즉시 변경 (toggle-role API)
- 검색 기능
Phase 6: 권한관리 팝업 컴포넌트
- 상태: ✅ 완료
- 파일:
frontend/components/common/RoleManageModal.vue - 작업 내용:
- 권한 목록 표시
- 권한 추가 기능 (신규 버튼)
- 권한 수정 기능 (인라인 편집)
- 권한 삭제 기능 (선택 삭제)
- 사용자 수 표시
- 기본 권한(ROLE_ADMIN, ROLE_MANAGER, ROLE_USER) 보호
Phase 7: 기존 코드 리팩토링
- 상태: ✅ 완료
- 작업 내용:
- useAuth.ts에 roles, hasRole() 추가
- 기존 isAdmin 하드코딩 → hasRole('ROLE_ADMIN')으로 변경
- aggregate.vue 권한 체크 수정
- bulk-import.vue 권한 체크 추가
- [id].vue canEdit/canDelete 수정
- index.vue isAdmin 수정
Phase 8: 기존 파일 정리
- 상태: ✅ 완료
- 작업 내용:
- frontend/employee/index.vue 삭제
- frontend/employee/[id].vue 삭제
- frontend/employee 폴더 삭제
📝 작업 로그
2025-01-10
- [10:XX] 작업 계획 파일 생성
- [XX:XX] Phase 1~6 완료
- [XX:XX] Phase 7 완료 - bulk-import.vue에 isAdmin 권한 체크 추가
- [XX:XX] Phase 8 완료 - frontend/employee 폴더 삭제
- [XX:XX] ✅ 전체 작업 완료
⚠️ 주의사항
- 기존 coziny@gmail.com 계정은 ROLE_ADMIN 자동 부여
- 모든 API는 ROLE_ADMIN 권한 체크 필요
- DB 마이그레이션 시 기존 데이터 영향 없음 확인
🔗 관련 파일
- README.md - 프로젝트 문서
- backend/utils/session.ts - 세션 관리
- frontend/composables/useAuth.ts - 인증 상태 관리