feat: 일일순회점검 시스템 구축 및 관리 기능 개선
- 일일순회점검 시스템 신규 구현 - DB 테이블: patrol_checklist_items, daily_patrol_sessions, patrol_check_records, workplace_items, item_types - API: /api/patrol/* 엔드포인트 - 프론트엔드: 지도 기반 작업장 점검 UI - 설비 관리 기능 개선 - 구매 관련 필드 추가 (구매일, 가격, 공급업체 등) - 설비 코드 자동 생성 (TKP-XXX 형식) - 작업장 관리 개선 - 레이아웃 이미지 업로드 기능 - 마커 위치 저장 기능 - 부서 관리 기능 추가 - 사이드바 네비게이션 카테고리 재구성 - 이미지 401 오류 수정 (정적 파일 경로 처리) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -20,16 +20,25 @@ router.use(verifyToken);
|
||||
|
||||
/**
|
||||
* 관리자 권한 확인 미들웨어
|
||||
* role 또는 access_level로 관리자 확인
|
||||
*/
|
||||
const adminOnly = (req, res, next) => {
|
||||
const userRole = req.user?.role?.toLowerCase();
|
||||
if (req.user && (userRole === 'admin' || userRole === 'system' || userRole === 'system admin')) {
|
||||
const accessLevel = req.user?.access_level?.toLowerCase();
|
||||
|
||||
// role 기반 확인
|
||||
const isAdminByRole = userRole === 'admin' || userRole === 'system' || userRole === 'system admin';
|
||||
// access_level 기반 확인 (role이 없는 경우 대비)
|
||||
const isAdminByAccessLevel = accessLevel === 'admin' || accessLevel === 'system';
|
||||
|
||||
if (req.user && (isAdminByRole || isAdminByAccessLevel)) {
|
||||
next();
|
||||
} else {
|
||||
logger.warn('관리자 권한 없는 접근 시도', {
|
||||
userId: req.user?.user_id,
|
||||
username: req.user?.username,
|
||||
role: req.user?.role,
|
||||
accessLevel: req.user?.access_level,
|
||||
url: req.originalUrl
|
||||
});
|
||||
return res.status(403).json({
|
||||
@@ -146,9 +155,12 @@ router.put('/:id/status', userController.updateUserStatus);
|
||||
// 🔑 사용자 비밀번호 초기화 (000000)
|
||||
router.post('/:id/reset-password', userController.resetUserPassword);
|
||||
|
||||
// 🗑️ 사용자 삭제
|
||||
// 🗑️ 사용자 비활성화 (Soft Delete)
|
||||
router.delete('/:id', userController.deleteUser);
|
||||
|
||||
// 💀 사용자 영구 삭제 (Hard Delete)
|
||||
router.delete('/:id/permanent', userController.permanentDeleteUser);
|
||||
|
||||
// 🔐 사용자 페이지 접근 권한 업데이트 (Admin만)
|
||||
router.put('/:id/page-access', userController.updateUserPageAccess);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user