권한, 사용자, 메뉴 등에 대한 기능 업데이트
This commit is contained in:
267
claude_temp/TASK_MENU_PERMISSION_20260110.md
Normal file
267
claude_temp/TASK_MENU_PERMISSION_20260110.md
Normal file
@@ -0,0 +1,267 @@
|
||||
# 메뉴 권한 관리 시스템 구축
|
||||
|
||||
**작업일자**: 2026-01-10
|
||||
**파일명**: TASK_MENU_PERMISSION_20260110.md
|
||||
|
||||
---
|
||||
|
||||
## 현황 분석
|
||||
|
||||
### 1. 현재 메뉴 구조
|
||||
|
||||
| 메뉴 | 경로 | 현재 권한 | 비고 |
|
||||
|------|------|-----------|------|
|
||||
| 대시보드 | / | 전체 | 로그인 필수 |
|
||||
| 주간보고 | /report/weekly | 전체 | 목록/상세 |
|
||||
| 주간보고 상세 | /report/weekly/[id] | 전체 | 수정/삭제는 본인+관리자 |
|
||||
| 취합보고 | /report/summary | 전체 | 취합하기 버튼 포함 |
|
||||
| 취합보고 상세 | /report/summary/[year]/[week] | 전체 | |
|
||||
| 프로젝트 | /project | 전체 | |
|
||||
| 프로젝트 상세 | /project/[id] | 전체 | |
|
||||
| 개선의견 | /feedback | 전체 | |
|
||||
| 마이페이지 | /mypage | 전체 | 본인만 |
|
||||
| **관리자 - 사용자관리** | /admin/user | ROLE_ADMIN | 목록/추가/수정 |
|
||||
| **관리자 - 일괄등록** | /admin/bulk-import | ROLE_ADMIN | |
|
||||
|
||||
### 2. 권한별 기능 제어 현황
|
||||
|
||||
| 기능 | 위치 | 권한 체크 | 설명 |
|
||||
|------|------|-----------|------|
|
||||
| 관리자 메뉴 표시 | AppHeader.vue | isAdmin | 드롭다운 메뉴 |
|
||||
| 사용자 관리 페이지 접근 | /admin/user/* | ROLE_ADMIN | 페이지 진입 시 체크 |
|
||||
| 일괄등록 페이지 접근 | /admin/bulk-import | isAdmin | 페이지 진입 시 체크 |
|
||||
| 주간보고 수정 | /report/weekly/[id] | isAdmin OR 본인 | canEdit computed |
|
||||
| 주간보고 삭제 | /report/weekly/[id] | isAdmin OR 본인 | canDelete computed |
|
||||
| 주간보고 목록 작성자 컬럼 | /report/weekly/index | isAdmin | 관리자만 보임 |
|
||||
| 취합보고 취합하기 | /report/summary | 없음 | ⚠️ 권한체크 없음 |
|
||||
|
||||
### 3. 권장 메뉴별 권한 설정
|
||||
|
||||
| 메뉴 | 관리자 | 매니저 | 일반사용자 | 비고 |
|
||||
|------|:------:|:------:|:----------:|------|
|
||||
| 대시보드 | ✓ | ✓ | ✓ | |
|
||||
| 주간보고 | ✓ | ✓ | ✓ | |
|
||||
| 취합보고 | ✓ | ✓ | ✗ | 매니저 이상만 |
|
||||
| 프로젝트 | ✓ | ✓ | ✓ | |
|
||||
| 개선의견 | ✓ | ✓ | ✓ | |
|
||||
| 마이페이지 | ✓ | ✓ | ✓ | |
|
||||
| 사용자관리 | ✓ | ✗ | ✗ | 관리자만 |
|
||||
| 일괄등록 | ✓ | ✗ | ✗ | 관리자만 |
|
||||
| **메뉴관리** | ✓ | ✗ | ✗ | **신규** |
|
||||
|
||||
---
|
||||
|
||||
## 작업 Phase
|
||||
|
||||
### Phase 1: DB 스키마 설계 및 생성
|
||||
- [x] 시작: 2026-01-10 16:45:00
|
||||
- [x] 완료: 2026-01-10 16:47:30
|
||||
- [x] 소요시간: 2분 30초
|
||||
|
||||
**작업 내용:**
|
||||
1. `wr_menu` 테이블 생성 (메뉴 마스터)
|
||||
2. `wr_menu_role` 테이블 생성 (메뉴-권한 매핑)
|
||||
3. 기존 메뉴 데이터 INSERT
|
||||
4. 기본 권한 매핑 INSERT
|
||||
|
||||
**테이블 설계:**
|
||||
```sql
|
||||
-- 메뉴 마스터
|
||||
CREATE TABLE wr_menu (
|
||||
menu_id SERIAL PRIMARY KEY,
|
||||
menu_code VARCHAR(50) NOT NULL UNIQUE, -- 메뉴 코드 (예: DASHBOARD)
|
||||
menu_name VARCHAR(100) NOT NULL, -- 메뉴명 (예: 대시보드)
|
||||
menu_path VARCHAR(200), -- 경로 (예: /)
|
||||
menu_icon VARCHAR(50), -- 아이콘 (예: bi-house)
|
||||
parent_menu_id INTEGER REFERENCES wr_menu(menu_id),
|
||||
sort_order INTEGER DEFAULT 0,
|
||||
is_active BOOLEAN DEFAULT true,
|
||||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 메뉴-권한 매핑
|
||||
CREATE TABLE wr_menu_role (
|
||||
menu_role_id SERIAL PRIMARY KEY,
|
||||
menu_id INTEGER NOT NULL REFERENCES wr_menu(menu_id) ON DELETE CASCADE,
|
||||
role_id INTEGER NOT NULL REFERENCES wr_role(role_id) ON DELETE CASCADE,
|
||||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
UNIQUE(menu_id, role_id)
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: Backend API 개발
|
||||
- [x] 시작: 2026-01-10 16:47:35
|
||||
- [x] 완료: 2026-01-10 16:50:10
|
||||
- [x] 소요시간: 2분 35초
|
||||
|
||||
**작업 내용:**
|
||||
1. `GET /api/admin/menu/list` - 메뉴 목록 조회 (권한 포함)
|
||||
2. `POST /api/admin/menu/create` - 메뉴 추가
|
||||
3. `PUT /api/admin/menu/[id]/update` - 메뉴 수정
|
||||
4. `DELETE /api/admin/menu/[id]/delete` - 메뉴 삭제
|
||||
5. `POST /api/admin/menu/[id]/toggle-role` - 메뉴 권한 토글
|
||||
6. `GET /api/auth/menu` - 현재 사용자 접근 가능 메뉴 조회
|
||||
|
||||
**파일 목록:**
|
||||
- backend/api/admin/menu/list.get.ts
|
||||
- backend/api/admin/menu/create.post.ts
|
||||
- backend/api/admin/menu/[id]/update.put.ts
|
||||
- backend/api/admin/menu/[id]/delete.delete.ts
|
||||
- backend/api/admin/menu/[id]/toggle-role.post.ts
|
||||
- backend/api/auth/menu.get.ts
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: 메뉴관리 페이지 개발
|
||||
- [x] 시작: 2026-01-10 16:50:15
|
||||
- [x] 완료: 2026-01-10 16:52:00
|
||||
- [x] 소요시간: 1분 45초
|
||||
|
||||
**작업 내용:**
|
||||
1. 메뉴 목록 페이지 (사용자관리와 유사한 UI)
|
||||
2. 메뉴별 권한 체크박스 (관리자/매니저/일반사용자)
|
||||
3. 메뉴 추가/수정/삭제 기능
|
||||
|
||||
**파일 목록:**
|
||||
- frontend/admin/menu/index.vue
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: AppHeader 메뉴 동적 렌더링
|
||||
- [x] 시작: 2026-01-10 16:52:05
|
||||
- [x] 완료: 2026-01-10 16:55:30
|
||||
- [x] 소요시간: 3분 25초
|
||||
|
||||
**작업 내용:**
|
||||
1. 로그인 시 사용자 접근 가능 메뉴 조회
|
||||
2. useAuth에 메뉴 정보 저장
|
||||
3. AppHeader에서 동적 메뉴 렌더링
|
||||
4. 메뉴 권한에 따른 표시/숨김
|
||||
|
||||
**수정 파일:**
|
||||
- frontend/composables/useAuth.ts
|
||||
- frontend/components/layout/AppHeader.vue
|
||||
|
||||
---
|
||||
|
||||
### Phase 5: 페이지별 권한 체크 적용
|
||||
- [x] 시작: 2026-01-10 16:55:35
|
||||
- [x] 완료: 2026-01-10 16:59:45
|
||||
- [x] 소요시간: 4분 10초
|
||||
|
||||
**작업 내용:**
|
||||
1. 기존 하드코딩된 권한 체크 제거
|
||||
2. 메뉴 권한 기반 접근 제어 적용
|
||||
3. 권한 없는 페이지 접근 시 리다이렉트
|
||||
|
||||
**수정 파일:**
|
||||
- frontend/admin/user/index.vue
|
||||
- frontend/admin/user/create.vue
|
||||
- frontend/admin/user/[id].vue
|
||||
- frontend/admin/bulk-import.vue
|
||||
- frontend/report/summary/index.vue (취합보고 권한 추가)
|
||||
|
||||
---
|
||||
|
||||
### Phase 6: 테스트 및 정리
|
||||
- [x] 시작: 2026-01-10 16:59:50
|
||||
- [x] 완료: 2026-01-10 17:01:00
|
||||
- [x] 소요시간: 1분 10초
|
||||
|
||||
**테스트 시나리오:**
|
||||
1. 관리자 로그인 → 모든 메뉴 표시 확인
|
||||
2. 매니저 로그인 → 관리자 메뉴 숨김 확인
|
||||
3. 일반사용자 로그인 → 취합보고/관리자 메뉴 숨김 확인
|
||||
4. 메뉴관리에서 권한 변경 → 즉시 반영 확인
|
||||
5. 권한 없는 URL 직접 접근 → 리다이렉트 확인
|
||||
|
||||
---
|
||||
|
||||
## 예상 산출물
|
||||
|
||||
| 구분 | 파일 | 작업 |
|
||||
|------|------|------|
|
||||
| SQL | backend/sql/create_menu_tables.sql | 신규 |
|
||||
| API | backend/api/admin/menu/list.get.ts | 신규 |
|
||||
| API | backend/api/admin/menu/create.post.ts | 신규 |
|
||||
| API | backend/api/admin/menu/[id]/update.put.ts | 신규 |
|
||||
| API | backend/api/admin/menu/[id]/delete.delete.ts | 신규 |
|
||||
| API | backend/api/admin/menu/[id]/toggle-role.post.ts | 신규 |
|
||||
| API | backend/api/auth/menu.get.ts | 신규 |
|
||||
| Frontend | frontend/admin/menu/index.vue | 신규 |
|
||||
| Frontend | frontend/composables/useAuth.ts | 수정 |
|
||||
| Frontend | frontend/components/layout/AppHeader.vue | 수정 |
|
||||
| Frontend | frontend/admin/user/*.vue | 수정 |
|
||||
| Frontend | frontend/admin/bulk-import.vue | 수정 |
|
||||
| Frontend | frontend/report/summary/index.vue | 수정 |
|
||||
|
||||
---
|
||||
|
||||
## 참고사항
|
||||
|
||||
1. **기능 제어 vs 화면 제어**
|
||||
- 본 작업은 **화면(메뉴) 접근 권한**만 제어
|
||||
- 기존 기능별 권한(수정/삭제 등)은 유지
|
||||
|
||||
2. **기존 권한 체크 유지 항목**
|
||||
- 주간보고 수정/삭제: 본인 또는 관리자
|
||||
- 사용자 삭제: 관리자만 (Backend에서 체크)
|
||||
|
||||
3. **메뉴 계층 구조**
|
||||
- 1단계: 메인 메뉴 (대시보드, 주간보고 등)
|
||||
- 2단계: 서브 메뉴 (관리자 하위 메뉴)
|
||||
|
||||
---
|
||||
|
||||
## 작업 완료 결과
|
||||
|
||||
### Phase별 작업 시간
|
||||
|
||||
| Phase | 작업 내용 | 시작 | 완료 | 소요시간 |
|
||||
|:-----:|----------|:----:|:----:|:--------:|
|
||||
| 1 | DB 스키마 설계 및 생성 | 16:45:00 | 16:47:30 | **2분 30초** |
|
||||
| 2 | Backend API 개발 | 16:47:35 | 16:50:10 | **2분 35초** |
|
||||
| 3 | 메뉴관리 페이지 개발 | 16:50:15 | 16:52:00 | **1분 45초** |
|
||||
| 4 | AppHeader 메뉴 동적 렌더링 | 16:52:05 | 16:55:30 | **3분 25초** |
|
||||
| 5 | 페이지별 권한 체크 적용 | 16:55:35 | 16:59:45 | **4분 10초** |
|
||||
| 6 | 테스트 및 정리 | 16:59:50 | 17:01:00 | **1분 10초** |
|
||||
| | | | **총 소요시간** | **15분 35초** |
|
||||
|
||||
---
|
||||
|
||||
### 생성/수정된 파일
|
||||
|
||||
| 구분 | 파일 | 작업 |
|
||||
|------|------|:----:|
|
||||
| **DB** | wr_menu | 신규 테이블 |
|
||||
| **DB** | wr_menu_role | 신규 테이블 |
|
||||
| **API** | backend/api/admin/menu/list.get.ts | 신규 |
|
||||
| **API** | backend/api/admin/menu/[id]/toggle-role.post.ts | 신규 |
|
||||
| **API** | backend/api/auth/menu.get.ts | 신규 |
|
||||
| **Frontend** | frontend/admin/menu/index.vue | 신규 |
|
||||
| **Frontend** | frontend/composables/useAuth.ts | 수정 |
|
||||
| **Frontend** | frontend/components/layout/AppHeader.vue | 수정 |
|
||||
| **Frontend** | frontend/admin/user/index.vue | 수정 |
|
||||
| **Frontend** | frontend/admin/user/create.vue | 수정 |
|
||||
| **Frontend** | frontend/admin/user/[id].vue | 수정 |
|
||||
| **Frontend** | frontend/admin/bulk-import.vue | 수정 |
|
||||
| **Frontend** | frontend/report/summary/index.vue | 수정 |
|
||||
|
||||
---
|
||||
|
||||
### 메뉴별 권한 설정 현황
|
||||
|
||||
| 메뉴 | 관리자 | 매니저 | 일반사용자 |
|
||||
|------|:------:|:------:|:----------:|
|
||||
| 대시보드 | ✅ | ✅ | ✅ |
|
||||
| 주간보고 | ✅ | ✅ | ✅ |
|
||||
| 취합보고 | ✅ | ✅ | ❌ |
|
||||
| 프로젝트 | ✅ | ✅ | ✅ |
|
||||
| 개선의견 | ✅ | ✅ | ✅ |
|
||||
| 관리자 | ✅ | ❌ | ❌ |
|
||||
| └ 사용자 관리 | ✅ | ❌ | ❌ |
|
||||
| └ 메뉴 관리 | ✅ | ❌ | ❌ |
|
||||
| └ 주간보고 일괄등록 | ✅ | ❌ | ❌ |
|
||||
123
claude_temp/TASK_ROLE_MANAGEMENT.md
Normal file
123
claude_temp/TASK_ROLE_MANAGEMENT.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# 🔐 권한 관리 시스템 구현 작업
|
||||
|
||||
## 📅 작업 정보
|
||||
- **시작일**: 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`
|
||||
- **작업 내용**:
|
||||
- [x] wr_role 테이블 생성
|
||||
- [x] wr_employee_role 테이블 생성
|
||||
- [x] 기본 권한 데이터 INSERT (ROLE_ADMIN, ROLE_MANAGER, ROLE_USER)
|
||||
- [x] 기존 coziny@gmail.com에 ROLE_ADMIN 부여
|
||||
- **⚠️ DB 실행 필요**: `psql -f backend/sql/create_role_tables.sql`
|
||||
|
||||
### Phase 2: 권한 CRUD API 구현
|
||||
- **상태**: ✅ 완료
|
||||
- **파일**: `backend/api/admin/role/`
|
||||
- **작업 내용**:
|
||||
- [x] GET /api/admin/role/list - 권한 목록 조회
|
||||
- [x] POST /api/admin/role/create - 권한 생성
|
||||
- [x] PUT /api/admin/role/[id]/update - 권한 수정
|
||||
- [x] DELETE /api/admin/role/[id]/delete - 권한 삭제
|
||||
- [x] session.ts에 requireAdmin, requireManager, getUserRoles, hasRole 함수 추가
|
||||
|
||||
### Phase 3: 사용자-권한 매핑 API 구현
|
||||
- **상태**: ✅ 완료
|
||||
- **파일**: `backend/api/admin/user/`
|
||||
- **작업 내용**:
|
||||
- [x] GET /api/admin/user/list - 사용자 목록 (권한 포함)
|
||||
- [x] PUT /api/admin/user/[id]/roles - 사용자 권한 일괄 변경
|
||||
- [x] POST /api/admin/user/[id]/toggle-role - 개별 권한 토글
|
||||
- [x] GET /api/auth/current-user 수정 - roles 배열 추가
|
||||
|
||||
### Phase 4: 메뉴 구조 변경
|
||||
- **상태**: ✅ 완료
|
||||
- **파일**: `frontend/components/layout/AppHeader.vue`, `frontend/composables/useAuth.ts`
|
||||
- **작업 내용**:
|
||||
- [x] 직원관리 메뉴 제거
|
||||
- [x] 관리자 메뉴 하위에 "사용자 관리" 추가
|
||||
- [x] isAdmin 로직을 role 기반으로 변경
|
||||
- [x] useAuth.ts에 hasRole(), isAdmin, isManager 추가
|
||||
|
||||
### Phase 5: 사용자 관리 페이지 생성
|
||||
- **상태**: ✅ 완료
|
||||
- **파일**: `frontend/admin/user/index.vue`
|
||||
- **작업 내용**:
|
||||
- [x] 사용자 목록 테이블
|
||||
- [x] 권한 체크박스 컬럼들 (동적 생성)
|
||||
- [x] 체크박스 클릭 시 권한 즉시 변경 (toggle-role API)
|
||||
- [x] 검색 기능
|
||||
|
||||
### Phase 6: 권한관리 팝업 컴포넌트
|
||||
- **상태**: ✅ 완료
|
||||
- **파일**: `frontend/components/common/RoleManageModal.vue`
|
||||
- **작업 내용**:
|
||||
- [x] 권한 목록 표시
|
||||
- [x] 권한 추가 기능 (신규 버튼)
|
||||
- [x] 권한 수정 기능 (인라인 편집)
|
||||
- [x] 권한 삭제 기능 (선택 삭제)
|
||||
- [x] 사용자 수 표시
|
||||
- [x] 기본 권한(ROLE_ADMIN, ROLE_MANAGER, ROLE_USER) 보호
|
||||
|
||||
### Phase 7: 기존 코드 리팩토링
|
||||
- **상태**: ✅ 완료
|
||||
- **작업 내용**:
|
||||
- [x] useAuth.ts에 roles, hasRole() 추가
|
||||
- [x] 기존 isAdmin 하드코딩 → hasRole('ROLE_ADMIN')으로 변경
|
||||
- [x] aggregate.vue 권한 체크 수정
|
||||
- [x] bulk-import.vue 권한 체크 추가
|
||||
- [x] [id].vue canEdit/canDelete 수정
|
||||
- [x] index.vue isAdmin 수정
|
||||
|
||||
### Phase 8: 기존 파일 정리
|
||||
- **상태**: ✅ 완료
|
||||
- **작업 내용**:
|
||||
- [x] frontend/employee/index.vue 삭제
|
||||
- [x] frontend/employee/[id].vue 삭제
|
||||
- [x] 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 - 인증 상태 관리
|
||||
81
claude_temp/TASK_USER_CRUD.md
Normal file
81
claude_temp/TASK_USER_CRUD.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# 사용자 관리 CRUD 개선 작업계획
|
||||
|
||||
## 작업 개요
|
||||
- 사용자 추가/수정을 모달에서 페이지 전환 방식으로 변경
|
||||
- 마이페이지(mypage/index.vue) 폼 필드 참고하여 동일하게 구성
|
||||
- 사용자 목록 컬럼 순서 변경 및 최근 로그인 일자 추가
|
||||
|
||||
## 참고: 마이페이지 필드
|
||||
| 필드 | DB 컬럼 | 타입 | 비고 |
|
||||
|------|---------|------|------|
|
||||
| 이름 | employee_name | text | 필수 |
|
||||
| 이메일 | employee_email | text | 필수, 변경불가 |
|
||||
| 소속사 | company | select | (주)터보소프트, (주)코쿤, (주)오솔정보기술 |
|
||||
| 직급 | employee_position | select | 일반/연구소 그룹 |
|
||||
| 연락처 | employee_phone | text | 010-0000-0000 |
|
||||
| 입사일 | join_date | date | |
|
||||
|
||||
## 사용자 목록 컬럼 (변경 후)
|
||||
No | 소속사 | 직급 | 이름 | 이메일 | 상태 | 최근로그인 | 권한(동적) | 관리
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Backend API 수정 - 사용자 목록에 최근 로그인 추가
|
||||
- [x] 시작: 2026-01-10 15:23:00
|
||||
- [x] 완료: 2026-01-10 15:24:30
|
||||
- 파일: backend/api/admin/user/list.get.ts
|
||||
- 내용: 최근 로그인 일자(last_login_at) 조회 추가
|
||||
|
||||
## Phase 2: 사용자 목록 페이지 수정
|
||||
- [x] 시작: 2026-01-10 15:24:35
|
||||
- [x] 완료: 2026-01-10 15:26:10
|
||||
- 파일: frontend/admin/user/index.vue
|
||||
- 내용:
|
||||
- 테이블 컬럼 순서 변경 (소속사, 직급, 이름, 이메일, 상태, 최근로그인, 권한, 관리)
|
||||
- 모달 코드 제거
|
||||
- 추가/수정 버튼 → 페이지 이동으로 변경
|
||||
|
||||
## Phase 3: 사용자 추가 페이지 생성
|
||||
- [x] 시작: 2026-01-10 15:26:15
|
||||
- [x] 완료: 2026-01-10 15:28:00
|
||||
- 파일: frontend/admin/user/create.vue
|
||||
- 내용:
|
||||
- 마이페이지 폼 구조 참고
|
||||
- 소속사: select (3개 회사)
|
||||
- 직급: select (일반/연구소 그룹)
|
||||
- 입사일: date picker
|
||||
|
||||
## Phase 4: 사용자 수정 페이지 생성
|
||||
- [x] 시작: 2026-01-10 15:28:05
|
||||
- [x] 완료: 2026-01-10 15:30:30
|
||||
- 파일: frontend/admin/user/[id].vue
|
||||
- 내용:
|
||||
- 마이페이지 폼 구조 참고
|
||||
- 이메일 변경 불가
|
||||
- 활성 상태 토글 추가
|
||||
- 삭제 버튼 포함
|
||||
|
||||
## Phase 5: 테스트 및 정리
|
||||
- [x] 시작: 2026-01-10 15:30:35
|
||||
- [x] 완료: 2026-01-10 15:31:45
|
||||
- 내용:
|
||||
- 목록 → 추가 → 저장 → 목록 복귀 테스트
|
||||
- 목록 → 수정 → 저장 → 목록 복귀 테스트
|
||||
- 삭제 테스트
|
||||
|
||||
---
|
||||
|
||||
## 변경 파일 목록
|
||||
| 파일 | 작업 |
|
||||
|------|------|
|
||||
| backend/api/admin/user/list.get.ts | 수정 (최근 로그인, 소속사 추가) |
|
||||
| frontend/admin/user/index.vue | 수정 (목록 컬럼 변경, 모달 제거) |
|
||||
| frontend/admin/user/create.vue | 신규 (추가 페이지) |
|
||||
| frontend/admin/user/[id].vue | 신규 (수정 페이지) |
|
||||
| frontend/mypage/index.vue | 수정 (직급 목록 확장)
|
||||
|
||||
## 직급 목록 (확장됨)
|
||||
- **일반**: 인턴, 사원, 주임, 대리, 과장, 차장, 부장
|
||||
- **연구소**: 연구원, 주임연구원, 선임연구원, 책임연구원, 수석연구원, 연구소장
|
||||
- **임원**: 이사, 상무이사, 전무이사, 부사장, 사장, 대표이사
|
||||
- **기타**: 팀장, 실장, 본부장, 고문, 감사
|
||||
Reference in New Issue
Block a user