feat: 사용자 관리 및 권한 시스템 구현
- 관리자 전용 사용자 관리 페이지 추가 - 사용자 추가/삭제 기능 (한글 ID 지원) - 비밀번호 변경 기능 - 권한별 메뉴 접근 제한 - 관리자: 모든 메뉴 접근 가능 - 일반 사용자: 일일공수, 부적합등록/조회만 가능 - 이미지 없이 부적합 등록 가능 - 목록 관리에서 이미지 수정 기능 - 작업 시간 확인 버튼 개선 - 부적합 조회 페이지 간소화 (시간순 나열)
This commit is contained in:
@@ -153,7 +153,7 @@
|
||||
<!-- 네비게이션 -->
|
||||
<nav class="bg-white border-b">
|
||||
<div class="container mx-auto px-4">
|
||||
<div class="flex gap-2 py-2 overflow-x-auto">
|
||||
<div id="navContainer" class="flex gap-2 py-2 overflow-x-auto">
|
||||
<a href="daily-work.html" class="nav-link">
|
||||
<i class="fas fa-calendar-check mr-2"></i>일일 공수
|
||||
</a>
|
||||
@@ -163,12 +163,15 @@
|
||||
<a href="issue-view.html" class="nav-link">
|
||||
<i class="fas fa-search mr-2"></i>부적합 조회
|
||||
</a>
|
||||
<button class="nav-link" onclick="showSection('list')">
|
||||
<button class="nav-link" onclick="showSection('list')" style="display:none;" id="listBtn">
|
||||
<i class="fas fa-list mr-2"></i>목록 관리
|
||||
</button>
|
||||
<button class="nav-link" onclick="showSection('summary')">
|
||||
<button class="nav-link" onclick="showSection('summary')" style="display:none;" id="summaryBtn">
|
||||
<i class="fas fa-chart-bar mr-2"></i>보고서
|
||||
</button>
|
||||
<a href="admin.html" class="nav-link" style="display:none;" id="adminBtn">
|
||||
<i class="fas fa-users-cog mr-2"></i>관리
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -276,11 +279,8 @@
|
||||
document.getElementById('loginScreen').classList.add('hidden');
|
||||
document.getElementById('mainScreen').classList.remove('hidden');
|
||||
|
||||
// 일반 사용자는 보고서 메뉴 숨김
|
||||
if (user.role === 'user') {
|
||||
const reportBtn = document.querySelector('button[onclick="showSection(\'summary\')"]');
|
||||
if (reportBtn) reportBtn.style.display = 'none';
|
||||
}
|
||||
// 권한에 따른 메뉴 표시/숨김
|
||||
updateNavigation();
|
||||
|
||||
loadIssues();
|
||||
}
|
||||
@@ -299,11 +299,8 @@
|
||||
document.getElementById('loginScreen').classList.add('hidden');
|
||||
document.getElementById('mainScreen').classList.remove('hidden');
|
||||
|
||||
// 일반 사용자는 보고서 메뉴 숨김
|
||||
if (currentUser.role === 'user') {
|
||||
const reportBtn = document.querySelector('button[onclick="showSection(\'summary\')"]');
|
||||
if (reportBtn) reportBtn.style.display = 'none';
|
||||
}
|
||||
// 권한에 따른 메뉴 표시/숨김
|
||||
updateNavigation();
|
||||
|
||||
loadIssues();
|
||||
} catch (error) {
|
||||
@@ -316,6 +313,27 @@
|
||||
AuthAPI.logout();
|
||||
}
|
||||
|
||||
// 네비게이션 권한 업데이트
|
||||
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-2"></i>사용자 관리';
|
||||
} else {
|
||||
// 일반 사용자는 제한된 메뉴만 표시
|
||||
listBtn.style.display = 'none';
|
||||
summaryBtn.style.display = 'none';
|
||||
adminBtn.style.display = '';
|
||||
adminBtn.innerHTML = '<i class="fas fa-key mr-2"></i>비밀번호 변경';
|
||||
}
|
||||
}
|
||||
|
||||
// 섹션 전환
|
||||
function showSection(section) {
|
||||
// 모든 섹션 숨기기
|
||||
|
||||
Reference in New Issue
Block a user