From 95f8e1239e80a809e746a19c2b8e36a9c6fbbd7f Mon Sep 17 00:00:00 2001
From: tpgus2603 <kakaneymar2424@gmail.com>
Date: Sun, 8 Dec 2024 15:37:55 +0900
Subject: [PATCH] =?UTF-8?q?refactor:=20=EB=A1=9C=EC=BB=AC=ED=85=8C?=
 =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EC=9A=A9=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?=
 =?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

---
 app.js                     |  2 +-
 middlewares/auth.js        | 13 +++++++------
 passport/googleStrategy.js |  8 ++++----
 routes/auth.js             |  3 +--
 routes/session.js          | 26 ++++++++++++++++++++++++++
 5 files changed, 39 insertions(+), 13 deletions(-)
 create mode 100644 routes/session.js

diff --git a/app.js b/app.js
index 594bdab..1841e8c 100644
--- a/app.js
+++ b/app.js
@@ -55,7 +55,7 @@ app.use(passport.session());
 app.use(flash());
 
 
-app.set('trust proxy', 1);
+//app.set('trust proxy', 1);
 console.log('MongoDB URI:', process.env.MONGO_URI);
 //라우터 등록 
 const authRoutes = require('./routes/auth');
diff --git a/middlewares/auth.js b/middlewares/auth.js
index afc74ea..315edee 100644
--- a/middlewares/auth.js
+++ b/middlewares/auth.js
@@ -1,15 +1,16 @@
 // middlewares/auth.js
-
-exports.isLoggedIn = (req, res, next) => { //로그인된 사용자자만 접근허용
+exports.isLoggedIn = (req, res, next) => { // 로그인된 사용자만 접근 허용
   if (req.isAuthenticated()) {
     return next();
   }
-  res.redirect('/auth/login');
+  // 리다이렉트 대신 401 Unauthorized 상태 반환
+  res.status(401).json({ error: '로그인 되지않은 사용자' });
 };
 
-exports.isNotLoggedIn = (req, res, next) => { //로그인 안되면 리다이렉트 
+exports.isNotLoggedIn = (req, res, next) => { // 로그인 안된 사용자만 접근 허용
   if (!req.isAuthenticated()) {
     return next();
   }
-  res.redirect('/');
-};
+  // 리다이렉트 대신 400 Bad Request 상태 반환 (필요에 따라 변경 가능)
+  res.status(400).json({ error: '이미 로그인된' });
+};
\ No newline at end of file
diff --git a/passport/googleStrategy.js b/passport/googleStrategy.js
index cd23c9d..f6698b3 100644
--- a/passport/googleStrategy.js
+++ b/passport/googleStrategy.js
@@ -1,15 +1,15 @@
 // passport/googleStrategy.js
-
 const { Strategy: GoogleStrategy } = require('passport-google-oauth20');
-const User = require('../models/user');
+const User = require('../models/user'); 
 
 module.exports = new GoogleStrategy(
   {
     clientID: process.env.GOOGLE_CLIENT_ID,
     clientSecret: process.env.GOOGLE_CLIENT_SECRET,
     callbackURL: process.env.CALLBACK_URL,
+    passReqToCallback: true, // req 객체를 콜백에 전달
   },
-  async (accessToken, refreshToken, profile, done) => {
+  async (req, accessToken, refreshToken, profile, done) => {
     try {
       // 프로필에서 사용자 정보 추출
       const email = profile.emails[0].value;
@@ -23,7 +23,7 @@ module.exports = new GoogleStrategy(
 
       return done(null, user);
     } catch (err) {
-      return done(err);
+      return done(err, null);
     }
   }
 );
diff --git a/routes/auth.js b/routes/auth.js
index 6583059..186b15d 100644
--- a/routes/auth.js
+++ b/routes/auth.js
@@ -12,11 +12,10 @@ router.get(
   })
 );
 
-// Google OAuth 콜백 라우터
 router.get(
   '/google/callback',
   passport.authenticate('google', {
-    failureRedirect: '/auth/login'
+    failureRedirect: `${process.env.FRONT_URL}/login` // 수정된 부분
   }),
   (req, res) => {
     const redirectUrl = process.env.FRONT_URL;
diff --git a/routes/session.js b/routes/session.js
new file mode 100644
index 0000000..77a3b11
--- /dev/null
+++ b/routes/session.js
@@ -0,0 +1,26 @@
+const express = require('express');
+const router = express.Router();
+
+// GET /api/session/info
+router.get('/info', (req, res) => {
+  if (req.user) {
+    const { email, name } = req.user;
+  // 캐싱 비활성화
+    res.set('Cache-Control', 'no-store');
+    res.set('Pragma', 'no-cache');        
+    return res.status(200).json({
+      user: {
+        email,
+        name,
+      },
+    });
+  }
+  // 세션이 만료되었거나 사용자 정보가 없는 경우
+  res.set('Cache-Control', 'no-store');
+  res.set('Pragma', 'no-cache');
+  res.status(401).json({
+    message: '세션이 만료되었거나 사용자 정보가 없습니다.',
+  });
+});
+
+module.exports = router;
\ No newline at end of file
-- 
GitLab