// controllers/pageAccessController.js const PageAccessModel = require('../models/pageAccessModel'); const PageAccessController = { // 사용자의 페이지 권한 조회 getUserPageAccess: (req, res) => { const userId = parseInt(req.params.userId); if (isNaN(userId)) { return res.status(400).json({ success: false, message: '유효하지 않은 사용자 ID입니다.' }); } PageAccessModel.getUserPageAccess(userId, (err, results) => { if (err) { console.error('페이지 권한 조회 오류:', err); return res.status(500).json({ success: false, message: '페이지 권한 조회 중 오류가 발생했습니다.', error: err.message }); } res.json({ success: true, data: results }); }); }, // 모든 페이지 목록 조회 getAllPages: (req, res) => { PageAccessModel.getAllPages((err, results) => { if (err) { console.error('페이지 목록 조회 오류:', err); return res.status(500).json({ success: false, message: '페이지 목록 조회 중 오류가 발생했습니다.', error: err.message }); } res.json({ success: true, data: results }); }); }, // 페이지 권한 부여 grantPageAccess: (req, res) => { const userId = parseInt(req.params.userId); const { pageId } = req.body; const grantedBy = req.user.user_id; if (isNaN(userId) || !pageId) { return res.status(400).json({ success: false, message: '필수 파라미터가 누락되었습니다.' }); } PageAccessModel.grantPageAccess(userId, pageId, grantedBy, (err, result) => { if (err) { console.error('페이지 권한 부여 오류:', err); return res.status(500).json({ success: false, message: '페이지 권한 부여 중 오류가 발생했습니다.', error: err.message }); } res.json({ success: true, message: '페이지 권한이 부여되었습니다.', data: result }); }); }, // 페이지 권한 회수 revokePageAccess: (req, res) => { const userId = parseInt(req.params.userId); const pageId = parseInt(req.params.pageId); if (isNaN(userId) || isNaN(pageId)) { return res.status(400).json({ success: false, message: '유효하지 않은 파라미터입니다.' }); } PageAccessModel.revokePageAccess(userId, pageId, (err, result) => { if (err) { console.error('페이지 권한 회수 오류:', err); return res.status(500).json({ success: false, message: '페이지 권한 회수 중 오류가 발생했습니다.', error: err.message }); } res.json({ success: true, message: '페이지 권한이 회수되었습니다.', data: result }); }); }, // 사용자 페이지 권한 일괄 설정 setUserPageAccess: (req, res) => { const userId = parseInt(req.params.userId); const { pageIds } = req.body; const grantedBy = req.user.user_id; if (isNaN(userId)) { return res.status(400).json({ success: false, message: '유효하지 않은 사용자 ID입니다.' }); } if (!Array.isArray(pageIds)) { return res.status(400).json({ success: false, message: 'pageIds는 배열이어야 합니다.' }); } PageAccessModel.setUserPageAccess(userId, pageIds, grantedBy, (err, result) => { if (err) { console.error('페이지 권한 설정 오류:', err); return res.status(500).json({ success: false, message: '페이지 권한 설정 중 오류가 발생했습니다.', error: err.message }); } res.json({ success: true, message: '페이지 권한이 설정되었습니다.', data: result }); }); }, // 특정 페이지 접근 권한 확인 checkPageAccess: (req, res) => { const userId = req.user.user_id; const { pageKey } = req.params; if (!pageKey) { return res.status(400).json({ success: false, message: '페이지 키가 필요합니다.' }); } PageAccessModel.checkPageAccess(userId, pageKey, (err, result) => { if (err) { console.error('페이지 접근 권한 확인 오류:', err); return res.status(500).json({ success: false, message: '페이지 접근 권한 확인 중 오류가 발생했습니다.', error: err.message }); } res.json({ success: true, data: result }); }); }, // 계정이 있는 사용자 목록 조회 (권한 관리용) getUsersWithAccounts: (req, res) => { PageAccessModel.getUsersWithAccounts((err, results) => { if (err) { console.error('사용자 목록 조회 오류:', err); return res.status(500).json({ success: false, message: '사용자 목록 조회 중 오류가 발생했습니다.', error: err.message }); } res.json({ success: true, data: results }); }); } }; module.exports = PageAccessController;