- Config, Service, Controller, View 생성
- Model 4개 (admin_api_* 테이블 참조)
- 3-Panel 레이아웃 (sidebar, request, response)
- HTMX 기반 동적 UI
- 마이그레이션은 api/ 프로젝트에서 관리
- INDEX.md: 메뉴 드래그앤드롭, 프로필 설정, 비밀번호 변경 강제, 게시판 템플릿, 파일 첨부, 일일 스크럼 기능 추가
- 04_PHASE4_CONTENT.md: 게시판 관리 체크리스트 업데이트 (EAV, 파일 첨부, 템플릿 완료 표시)
- CURRENT_WORKS.md: 2025-12-02 작업 내역 추가
사용자 모달 기능:
- 사용자 정보 모달 팝업 (조회/삭제/수정)
- 권한 요약 정보 (Web/API 권한 카운트)
- 2x2 그리드 레이아웃 (테넌트, 역할, 부서, 권한)
- 테이블 행 클릭으로 모달 열기
- 권한 관리 링크 클릭 시 해당 사용자 자동 선택
컨텍스트 메뉴 확장:
- permission-analyze 페이지 사용자 이름에 컨텍스트 메뉴
- user-permissions 페이지 사용자 버튼에 컨텍스트 메뉴
- 사용자 모달 내 테넌트 칩에 컨텍스트 메뉴
- 헤더 테넌트 배지에 컨텍스트 메뉴
- 테넌트 메뉴에 "이 테넌트로 전환" 기능 추가
- 역할/부서/개인 권한을 통합하여 최종 유효 권한 표시
- 권한 소스별 색상 구분 UI (보라=역할, 파랑=부서, 녹색=개인허용, 빨강=개인거부)
- 스마트 토글 로직 (상속된 권한 오버라이드 지원)
- UserPermissionService: getRolePermissions(), getDepartmentPermissions(), getPersonalOverrides()
- 사용자 ID 뱃지 스타일 개선
- 부서 권한 아키텍처 재설계 (Role → Department 직접 할당)
- Guard 선택 기능 구현 (API/Web 분리)
- 초기화(Reset) 기능 추가 (view 권한만 허용)
- UI 개선 (Guard 선택기 + 구분선)
부서 권한 관리:
- Department 모델에 HasPermissions trait 추가
- DepartmentPermissionService 완전 재작성 (직접 할당 패턴)
- model_has_permissions 테이블 직접 사용
- guard_name 파라미터 모든 메서드에 추가
역할 권한 관리:
- RolePermissionService에 guard_name 파라미터 추가
- RolePermissionController에 guard_name 처리 구현
- Guard별 독립적인 권한 매트릭스 관리
UI 개선:
- Guard 선택 드롭다운 (Web/API) 추가
- 모든 HTMX 요청에 guard_name 포함
- Guard 변경 시 자동 새로고침 기능
- 시각적 구분선으로 UI 가독성 향상
- DepartmentPermissionService 생성 (역할 권한 관리 패턴 적용)
- 부서별 메뉴 권한 매트릭스 관리
- 하위 부서 권한 자동 전파 기능
- 전체 허용/거부/초기화 기능
- HTMX 기반 실시간 권한 토글
- Department 모델의 HasRoles trait 활용
- model_has_permissions 테이블 사용
주요 파일:
- app/Services/DepartmentPermissionService.php
- app/Http/Controllers/DepartmentPermissionController.php
- app/Http/Controllers/Api/Admin/DepartmentPermissionController.php
- resources/views/department-permissions/index.blade.php
- resources/views/department-permissions/partials/*.blade.php
- routes/web.php, routes/api.php 라우트 추가
- sidebar 부서 권한 관리 메뉴 활성화
- 테넌트 선택을 각 페이지에서 헤더로 통합 이동
- 페이지 제목 이모지 제거 및 상단 여백(mt-6) 축소
- 역할 권한 관리 페이지 레이아웃을 다른 페이지와 통일
- 메뉴명 스타일 개선 (depth 들여쓰기, └ 기호 적용)
- 상위 메뉴 컬럼 제거로 테이블 간소화
- RolePermissionService에 depth 계산 로직 추가
- pagination.js를 body 끝으로 이동하여 로딩 오류 해결
- 역할 선택 UI를 셀렉트박스에서 버튼 형태로 변경
- 역할 버튼 hover 효과 개선 (선택된 버튼 가독성 향상)
변경된 파일:
- resources/views/partials/header.blade.php: 테넌트 선택 UI 추가
- resources/views/dashboard|menus|users|departments|permissions|roles/index.blade.php: tenant-selector 제거, 여백 축소
- resources/views/layouts/app.blade.php: pagination.js 위치 변경
- app/Services/RolePermissionService.php: depth 계산 로직 추가
- resources/views/role-permissions/: 역할 권한 관리 페이지 개선
- routes/web.php, routes/api.php: 역할 권한 관리 라우트 추가
- CURRENT_WORKS.md: Phase 4-2~4-5 상세 작업 내역 추가 (365줄)
- docs/INDEX.md: Phase 4 완료 상태 업데이트
- docs/specs/database-schema.md: Phase 4 테이블 8개 상세 스키마 추가
- sidebar.blade.php: 메뉴 관리 링크 추가 (누락되어 있었음)
Phase 4 완료: 시스템 관리 5개 메뉴 (테넌트/역할/부서/사용자/메뉴)
- Tenant 모델 생성 (SoftDeletes, active scope)
- TenantController 전환 컨트롤러
- ViewServiceProvider로 모든 뷰에 테넌트 데이터 자동 제공
- partials/tenant-selector.blade.php UI 컴포넌트
기능:
- 드롭다운으로 테넌트 전환 (전체 보기 포함)
- Session 기반 선택 상태 저장
- 우측에 현재 테넌트 정보 표시
- 모든 페이지에서 @include로 사용 가능
이슈 해결:
- is_active 컬럼 없음 → tenant_st_code + deleted_at 사용
- 삭제되지 않은 모든 테넌트 표시 (7개)
- DaisyUI 완전 제거, Pure Tailwind CSS로 전환
- oklch() 색상 함수 → hex 색상으로 변경 (구형 브라우저 지원)
- 로그인 페이지 Tailwind 유틸리티 클래스로 리팩토링
- CSS 빌드 사이즈 74.82KB → 23.15KB 최적화
- DB_HOST 설정 수정 (sam-mysql-1 → 127.0.0.1)
## 변경 내역
- tailwind.config.js: DaisyUI 제거, custom 색상 정의
- resources/views/auth/login.blade.php: DaisyUI 클래스 → Tailwind 유틸리티
- resources/css/app.css: CSS 변수 추가
- .env: DB_HOST 로컬 접근 설정
- docs/INDEX.md: MNG 문서 인덱스 추가
## 해결된 문제
- Safari <15.4, Chrome <111에서 CSS 미적용 문제 해결
- 모든 브라우저에서 로그인 페이지 정상 작동 확인