From 005228caaa6922f4cbb934e402fc170410752a3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=AC=EC=9E=AC=EC=97=BD?= <jysim0326@ajou.ac.kr> Date: Sun, 8 Dec 2024 22:14:55 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20fcmToken=20=EB=93=B1=EB=A1=9D=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/authRoute.js | 113 +++++++++++++++++++++++--------------- routes/chatRoute.js | 4 ++ services/memberService.js | 2 +- 3 files changed, 74 insertions(+), 45 deletions(-) diff --git a/routes/authRoute.js b/routes/authRoute.js index e6f2d55..a83f6d4 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 e7c2769..ed55aa5 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 0435672..ebe4fe1 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) { -- GitLab