Files
weeklyreport/claude_temp/TASK_ROLE_MANAGEMENT.md

4.2 KiB

🔐 권한 관리 시스템 구현 작업

📅 작업 정보

  • 시작일: 2025-01-10
  • 최종 수정: 2025-01-10
  • 상태: 완료

🎯 목표

  1. 직원관리 → 관리자 메뉴 하위 "사용자 관리"로 이동 및 명칭 변경
  2. 사용자 목록에 권한 체크박스 표시
  3. 권한관리 팝업으로 권한 CRUD
  4. 기존 하드코딩 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 - 인증 상태 관리