Skip to content
Snippets Groups Projects

[#25] fcmToken 등록 로직 수정

Merged 심재엽 requested to merge feature/#25 into deploy
3 files
+ 74
45
Compare changes
  • Side-by-side
  • Inline

Files

+ 69
44
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
Loading