Skip to content
Snippets Groups Projects
Commit 005228ca authored by 심재엽's avatar 심재엽
Browse files

refactor: fcmToken 등록 로직 수정

parent 0ab72462
No related branches found
No related tags found
2 merge requests!42[#25] 배포코드 master브랜치로 이동,!41[#25] fcmToken 등록 로직 수정
const express = require('express'); const express = require('express');
const passport = require('passport'); const passport = require('passport');
const MemberService = require('../services/memberService');
const router = express.Router(); const router = express.Router();
// Google OAuth 로그인 라우터 // Google OAuth 로그인 라우터
router.get( router.get(
'/login', '/login',
passport.authenticate('google', { (req, res, next) => {
scope: ['profile', 'email'], // 사용자 정보 요청을 위한 scope const { state } = req.query; // 클라이언트에서 전달된 state(fcmToken)
failureRedirect: `${process.env.FRONT_URL}/login` console.log("State received at /login:", state);
})
);
router.get( passport.authenticate("google", {
'/google/callback', scope: ["profile", "email"], // 요청할 사용자 정보
passport.authenticate('google', { state, // 전달받은 fcmToken을 state로 설정
failureRedirect: `${process.env.FRONT_URL}/login` })(req, res, next);
}), }
(req, res) => { );
const redirectUrl = process.env.FRONT_URL;
req.session.save((err) => { router.get(
if (err) { '/google/callback',
console.error('세션 저장 오류:', err); passport.authenticate('google', {
return res.status(500).json({ error: '서버 오류' }); failureRedirect: `${process.env.FRONT_URL}/login`
} }),
res.redirect(redirectUrl); 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);
} }
);
// 로그아웃 라우터 req.session.save((err) => {
router.get('/logout', (req, res) => { if (err) {
if (req.session) { console.error('세션 저장 오류:', err);
req.session.destroy((err) => { return res.status(500).json({ error: '서버 오류' });
if (err) { }
console.error('세션 삭제 오류:', err); res.redirect(redirectUrl);
return res.status(500).json({ error: '서버 오류' });
} });
const redirectUrl = process.env.FRONT_URL; }
res.redirect(redirectUrl); );
});
} else { // 로그아웃 라우터
// 세션이 없는 경우에도 리다이렉트 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; const redirectUrl = process.env.FRONT_URL;
res.redirect(redirectUrl); res.redirect(redirectUrl);
} });
}); } else {
// 세션이 없는 경우에도 리다이렉트
// 사용자 삭제 라우터 const redirectUrl = process.env.FRONT_URL;
res.redirect(redirectUrl);
}
});
// 사용자 삭제 라우터
router.delete('/leave', async (req, res) => { router.delete('/leave', async (req, res) => {
try { try {
// 인증된 사용자 확인 // 인증된 사용자 확인
...@@ -81,4 +106,4 @@ router.delete('/leave', async (req, res) => { ...@@ -81,4 +106,4 @@ router.delete('/leave', async (req, res) => {
} }
}); });
module.exports = router; module.exports = router;
\ No newline at end of file \ No newline at end of file
const express = require('express'); const express = require('express');
const router = express.Router(); const router = express.Router();
const chatController = require('../controllers/chatController'); const chatController = require('../controllers/chatController');
const { isLoggedIn } = require('../middlewares/auth');
router.post('/create-room', chatController.createChatRoom); router.post('/create-room', chatController.createChatRoom);
router.get('/rooms', chatController.getChatRooms); router.get('/rooms', chatController.getChatRooms);
...@@ -10,6 +11,9 @@ router.get('/unread-messages/:nickname', chatController.getUnreadMessages); ...@@ -10,6 +11,9 @@ router.get('/unread-messages/:nickname', chatController.getUnreadMessages);
router.get('/unread-count/:chatRoomId', chatController.getUnreadCount); router.get('/unread-count/:chatRoomId', chatController.getUnreadCount);
router.post('/update-status-and-logid', chatController.updateStatusAndLogId); router.post('/update-status-and-logid', chatController.updateStatusAndLogId);
router.post('/update-read-log-id', chatController.updateReadLogId); router.post('/update-read-log-id', chatController.updateReadLogId);
router.use(isLoggedIn);
router.post('/:chatRoomId/notices', chatController.addNotice); router.post('/:chatRoomId/notices', chatController.addNotice);
router.get('/:chatRoomId/notices/latest', chatController.getLatestNotice); router.get('/:chatRoomId/notices/latest', chatController.getLatestNotice);
router.get('/:chatRoomId/notices', chatController.getAllNotices); router.get('/:chatRoomId/notices', chatController.getAllNotices);
......
...@@ -25,7 +25,7 @@ class MemberService { ...@@ -25,7 +25,7 @@ class MemberService {
} }
// 3. MongoDB에서 관련 채팅방의 FCM 토큰 업데이트 // 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) { for (const room of existingChatRooms) {
room.participants = room.participants.map((participant) => { room.participants = room.participants.map((participant) => {
if (participant.name === user.name) { if (participant.name === user.name) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment