// controllers/pushSubscriptionController.js const pushSubscriptionModel = require('../models/pushSubscriptionModel'); const pushSubscriptionController = { // VAPID 공개키 반환 (인증 불필요) async getVapidPublicKey(req, res) { const vapidPublicKey = process.env.VAPID_PUBLIC_KEY; if (!vapidPublicKey) { return res.status(500).json({ success: false, message: 'VAPID 키가 설정되지 않았습니다.' }); } res.json({ success: true, data: { vapidPublicKey } }); }, // Push 구독 저장 async subscribe(req, res) { try { const userId = req.user?.id; const { subscription } = req.body; if (!subscription || !subscription.endpoint || !subscription.keys) { return res.status(400).json({ success: false, message: '유효한 구독 정보가 필요합니다.' }); } await pushSubscriptionModel.subscribe(userId, subscription); res.json({ success: true, message: 'Push 구독이 등록되었습니다.' }); } catch (error) { console.error('Push 구독 오류:', error); res.status(500).json({ success: false, message: 'Push 구독 중 오류가 발생했습니다.' }); } }, // Push 구독 해제 async unsubscribe(req, res) { try { const { endpoint } = req.body; if (!endpoint) { return res.status(400).json({ success: false, message: 'endpoint가 필요합니다.' }); } await pushSubscriptionModel.unsubscribe(endpoint); res.json({ success: true, message: 'Push 구독이 해제되었습니다.' }); } catch (error) { console.error('Push 구독 해제 오류:', error); res.status(500).json({ success: false, message: 'Push 구독 해제 중 오류가 발생했습니다.' }); } } }; module.exports = pushSubscriptionController;