diff --git a/routes/authRoute.js b/routes/authRoute.js index e6f2d553e56f361aec5c9f6ca82d664c1b5034ff..a83f6d484e2469e47eebbd4d6af82392b619c61f 100644 --- a/routes/authRoute.js +++ b/routes/authRoute.js @@ -1,53 +1,78 @@ - const express = require('express'); - const passport = require('passport'); +const express = require('express'); +const passport = require('passport'); +const MemberService = require('../services/memberService'); - const router = express.Router(); +const router = express.Router(); - // Google OAuth 濡쒓렇�� �쇱슦�� - router.get( - '/login', - passport.authenticate('google', { - scope: ['profile', 'email'], // �ъ슜�� �뺣낫 �붿껌�� �꾪븳 scope - failureRedirect: `${process.env.FRONT_URL}/login` - }) - ); +// Google OAuth 濡쒓렇�� �쇱슦�� +router.get( + '/login', + (req, res, next) => { + const { state } = req.query; // �대씪�댁뼵�몄뿉�� �꾨떖�� state(fcmToken) + console.log("State received at /login:", state); - router.get( - '/google/callback', - passport.authenticate('google', { - failureRedirect: `${process.env.FRONT_URL}/login` - }), - (req, res) => { - const redirectUrl = process.env.FRONT_URL; - req.session.save((err) => { - if (err) { - console.error('�몄뀡 ���� �ㅻ쪟:', err); - return res.status(500).json({ error: '�쒕쾭 �ㅻ쪟' }); - } - res.redirect(redirectUrl); - }); + passport.authenticate("google", { + scope: ["profile", "email"], // �붿껌�� �ъ슜�� �뺣낫 + state, // �꾨떖諛쏆� fcmToken�� state濡� �ㅼ젙 + })(req, res, next); + } +); + +router.get( + '/google/callback', + passport.authenticate('google', { + failureRedirect: `${process.env.FRONT_URL}/login` + }), + async (req, res) => { + // Google OAuth �몄쬆 �깃났 �� state �뚮씪誘명꽣濡� �꾨떖�� fcmToken 媛��몄삤湲� + const fcmToken = req.query.state; + console.log("諛쏆븘�� fcmToken", fcmToken); + const userEmail = req.user.email; // Google 濡쒓렇�몄뿉�� 媛��몄삩 email + const redirectUrl = process.env.FRONT_URL; + req.session.userEmail = userEmail; // �몄뀡�� �ъ슜�� �대찓�� ���� + + try { + if (fcmToken) { + // FCM �좏겙 �깅줉 + await MemberService.registerToken(userEmail, fcmToken); + console.log(`FCM token registered for user: ${userEmail}`); + } else { + console.warn("No FCM token provided during login"); + } + } catch (error) { + console.error("Error registering FCM token during login:", error); } - ); - // 濡쒓렇�꾩썐 �쇱슦�� - router.get('/logout', (req, res) => { - if (req.session) { - req.session.destroy((err) => { - if (err) { - console.error('�몄뀡 ��젣 �ㅻ쪟:', err); - return res.status(500).json({ error: '�쒕쾭 �ㅻ쪟' }); - } - const redirectUrl = process.env.FRONT_URL; - res.redirect(redirectUrl); - }); - } else { - // �몄뀡�� �녿뒗 寃쎌슦�먮룄 由щ떎�대젆�� + req.session.save((err) => { + if (err) { + console.error('�몄뀡 ���� �ㅻ쪟:', err); + return res.status(500).json({ error: '�쒕쾭 �ㅻ쪟' }); + } + res.redirect(redirectUrl); + + }); + } +); + +// 濡쒓렇�꾩썐 �쇱슦�� +router.get('/logout', (req, res) => { + if (req.session) { + req.session.destroy((err) => { + if (err) { + console.error('�몄뀡 ��젣 �ㅻ쪟:', err); + return res.status(500).json({ error: '�쒕쾭 �ㅻ쪟' }); + } const redirectUrl = process.env.FRONT_URL; res.redirect(redirectUrl); - } - }); - - // �ъ슜�� ��젣 �쇱슦�� + }); + } else { + // �몄뀡�� �녿뒗 寃쎌슦�먮룄 由щ떎�대젆�� + const redirectUrl = process.env.FRONT_URL; + res.redirect(redirectUrl); + } +}); + +// �ъ슜�� ��젣 �쇱슦�� router.delete('/leave', async (req, res) => { try { // �몄쬆�� �ъ슜�� �뺤씤 @@ -81,4 +106,4 @@ router.delete('/leave', async (req, res) => { } }); - module.exports = router; \ No newline at end of file +module.exports = router; \ No newline at end of file diff --git a/routes/chatRoute.js b/routes/chatRoute.js index e7c2769ca7ec5a4cf449694190885d2f19333046..ed55aa560c36105aff3706f702bda26fe0c6f234 100644 --- a/routes/chatRoute.js +++ b/routes/chatRoute.js @@ -1,6 +1,7 @@ const express = require('express'); const router = express.Router(); const chatController = require('../controllers/chatController'); +const { isLoggedIn } = require('../middlewares/auth'); router.post('/create-room', chatController.createChatRoom); router.get('/rooms', chatController.getChatRooms); @@ -10,6 +11,9 @@ router.get('/unread-messages/:nickname', chatController.getUnreadMessages); router.get('/unread-count/:chatRoomId', chatController.getUnreadCount); router.post('/update-status-and-logid', chatController.updateStatusAndLogId); router.post('/update-read-log-id', chatController.updateReadLogId); + +router.use(isLoggedIn); + router.post('/:chatRoomId/notices', chatController.addNotice); router.get('/:chatRoomId/notices/latest', chatController.getLatestNotice); router.get('/:chatRoomId/notices', chatController.getAllNotices); diff --git a/services/memberService.js b/services/memberService.js index 0435672d90a949dd46dcb7bad1de73d7fe764f69..ebe4fe15d7974bcfce53ad99dbc732ed79672bc2 100644 --- a/services/memberService.js +++ b/services/memberService.js @@ -25,7 +25,7 @@ class MemberService { } // 3. MongoDB�먯꽌 愿��� 梨꾪똿諛⑹쓽 FCM �좏겙 �낅뜲�댄듃 - const existingChatRooms = await ChatRoom.find({ "participants.name": user.name }); + const existingChatRooms = await ChatRooms.find({ "participants.name": user.name }); for (const room of existingChatRooms) { room.participants = room.participants.map((participant) => { if (participant.name === user.name) {