const partnerAccountModel = require('../models/partnerAccountModel'); const { getPool } = require('../models/partnerModel'); // 업체별 계정 목록 async function listByCompany(req, res) { try { const rows = await partnerAccountModel.findByCompany(req.params.companyId); res.json({ success: true, data: rows }); } catch (err) { console.error('PartnerAccount listByCompany error:', err); res.status(500).json({ success: false, error: err.message }); } } // 계정 생성 async function create(req, res) { try { const { username, password, name, partner_company_id, account_expires_at } = req.body; if (!username || !username.trim()) { return res.status(400).json({ success: false, error: '아이디는 필수입니다' }); } if (!password || password.length < 4) { return res.status(400).json({ success: false, error: '비밀번호는 4자 이상이어야 합니다' }); } if (!name || !name.trim()) { return res.status(400).json({ success: false, error: '이름은 필수입니다' }); } if (!partner_company_id) { return res.status(400).json({ success: false, error: '업체를 선택해주세요' }); } // 아이디 중복 확인 const db = getPool(); const [existing] = await db.query('SELECT user_id FROM sso_users WHERE username = ?', [username]); if (existing.length > 0) { return res.status(400).json({ success: false, error: '이미 사용 중인 아이디입니다' }); } const account = await partnerAccountModel.create({ username, password, name, partner_company_id, account_expires_at }); // 기본 권한 부여 await partnerAccountModel.grantDefaultPermissions(account.user_id); res.status(201).json({ success: true, data: account }); } catch (err) { if (err.code === 'ER_DUP_ENTRY') { return res.status(400).json({ success: false, error: '이미 사용 중인 아이디입니다' }); } console.error('PartnerAccount create error:', err); res.status(500).json({ success: false, error: err.message }); } } // 계정 수정 async function update(req, res) { try { const account = await partnerAccountModel.update(req.params.id, req.body); if (!account) return res.status(404).json({ success: false, error: '계정을 찾을 수 없습니다' }); res.json({ success: true, data: account }); } catch (err) { console.error('PartnerAccount update error:', err); res.status(500).json({ success: false, error: err.message }); } } // 계정 비활성화 async function deactivate(req, res) { try { const account = await partnerAccountModel.update(req.params.id, { is_active: false }); if (!account) return res.status(404).json({ success: false, error: '계정을 찾을 수 없습니다' }); res.json({ success: true, message: '비활성화 완료' }); } catch (err) { console.error('PartnerAccount deactivate error:', err); res.status(500).json({ success: false, error: err.message }); } } module.exports = { listByCompany, create, update, deactivate };