- 최고관리자(Supervisor) 전용 2중 보안 잠금 시스템 및 인증 UI 적용 - 데이터베이스 인프라 및 암호화 마스터 키 자가 관리 기능 구축 - 권한 계층(Supervisor > Admin > User) 기반의 메뉴 노출 및 접근 제어 로직 강화 - 시스템 버전 정보 페이지 신규 추가 및 패키지 버전 자동 연동 (v0.2.5) - 사용자 관리 UI 디자인 개선 및 폰트/스타일 일원화
39 lines
1012 B
JavaScript
39 lines
1012 B
JavaScript
const ROLES = {
|
|
SUPERVISOR: 'supervisor',
|
|
ADMIN: 'admin',
|
|
USER: 'user'
|
|
};
|
|
|
|
const HIERARCHY = {
|
|
[ROLES.SUPERVISOR]: 100,
|
|
[ROLES.ADMIN]: 50,
|
|
[ROLES.USER]: 10
|
|
};
|
|
|
|
const isAuthenticated = (req, res, next) => {
|
|
if (req.session && req.session.user) {
|
|
return next();
|
|
}
|
|
return res.status(401).json({ success: false, message: 'Unauthorized' });
|
|
};
|
|
|
|
const hasRole = (requiredRole) => {
|
|
return (req, res, next) => {
|
|
if (!req.session || !req.session.user) {
|
|
return res.status(401).json({ success: false, message: 'Unauthorized' });
|
|
}
|
|
|
|
const userRole = req.session.user.role;
|
|
const userLevel = HIERARCHY[userRole] || 0;
|
|
const requiredLevel = HIERARCHY[requiredRole] || 999;
|
|
|
|
if (userLevel >= requiredLevel) {
|
|
return next();
|
|
}
|
|
|
|
return res.status(403).json({ success: false, message: 'Forbidden: Insufficient permissions' });
|
|
};
|
|
};
|
|
|
|
module.exports = { isAuthenticated, hasRole, ROLES };
|