feat: 사용자 관리 및 권한 시스템 구현

- 관리자 전용 사용자 관리 페이지 추가
- 사용자 추가/삭제 기능 (한글 ID 지원)
- 비밀번호 변경 기능
- 권한별 메뉴 접근 제한
  - 관리자: 모든 메뉴 접근 가능
  - 일반 사용자: 일일공수, 부적합등록/조회만 가능
- 이미지 없이 부적합 등록 가능
- 목록 관리에서 이미지 수정 기능
- 작업 시간 확인 버튼 개선
- 부적합 조회 페이지 간소화 (시간순 나열)
This commit is contained in:
hyungi
2025-09-17 13:02:38 +09:00
parent 1339e5dded
commit f6bdb68d19
9 changed files with 497 additions and 25 deletions

View File

@@ -55,7 +55,7 @@
<h1 class="text-xl font-semibold text-gray-800">
<i class="fas fa-clipboard-list mr-2"></i>작업보고서 시스템
</h1>
<div class="flex items-center gap-4">
<div id="navContainer" class="flex items-center gap-4">
<a href="/daily-work.html" class="text-gray-600 hover:text-gray-800 transition-colors">
<i class="fas fa-calendar-day mr-1"></i>일일 공수
</a>
@@ -65,12 +65,15 @@
<a href="/issue-view.html" class="text-blue-600 font-medium">
<i class="fas fa-search mr-1"></i>부적합 조회
</a>
<a href="/index.html#list" class="text-gray-600 hover:text-gray-800 transition-colors">
<a href="/index.html#list" class="text-gray-600 hover:text-gray-800 transition-colors" style="display:none;" id="listBtn">
<i class="fas fa-list mr-1"></i>목록 관리
</a>
<a href="/index.html#summary" class="text-gray-600 hover:text-gray-800 transition-colors">
<a href="/index.html#summary" class="text-gray-600 hover:text-gray-800 transition-colors" style="display:none;" id="summaryBtn">
<i class="fas fa-chart-bar mr-1"></i>보고서
</a>
<a href="/admin.html" class="text-gray-600 hover:text-gray-800 transition-colors" style="display:none;" id="adminBtn">
<i class="fas fa-users-cog mr-1"></i>관리
</a>
<button onclick="AuthAPI.logout()" class="px-3 py-1 bg-red-500 text-white rounded hover:bg-red-600 transition-colors text-sm">
<i class="fas fa-sign-out-alt mr-1"></i>로그아웃
</button>
@@ -133,10 +136,34 @@
}
currentUser = user;
// 네비게이션 권한 체크
updateNavigation();
// 기본값: 이번 주 데이터 로드
setDateRange('week');
});
// 네비게이션 권한 업데이트
function updateNavigation() {
const listBtn = document.getElementById('listBtn');
const summaryBtn = document.getElementById('summaryBtn');
const adminBtn = document.getElementById('adminBtn');
if (currentUser.role === 'admin') {
// 관리자는 모든 메뉴 표시
listBtn.style.display = '';
summaryBtn.style.display = '';
adminBtn.style.display = '';
adminBtn.innerHTML = '<i class="fas fa-users-cog mr-1"></i>사용자 관리';
} else {
// 일반 사용자는 제한된 메뉴만 표시
listBtn.style.display = 'none';
summaryBtn.style.display = 'none';
adminBtn.style.display = '';
adminBtn.innerHTML = '<i class="fas fa-key mr-1"></i>비밀번호 변경';
}
}
// 날짜 범위 설정 및 자동 조회
async function setDateRange(range) {
currentRange = range;