Skip to content
Snippets Groups Projects
Commit 95f8e123 authored by tpgus2603's avatar tpgus2603
Browse files

refactor: 로컬테스트용 로그인로직 수정

parent 39c45e32
No related branches found
No related tags found
1 merge request!42[#25] 배포코드 master브랜치로 이동
...@@ -55,7 +55,7 @@ app.use(passport.session()); ...@@ -55,7 +55,7 @@ app.use(passport.session());
app.use(flash()); app.use(flash());
app.set('trust proxy', 1); //app.set('trust proxy', 1);
console.log('MongoDB URI:', process.env.MONGO_URI); console.log('MongoDB URI:', process.env.MONGO_URI);
//라우터 등록 //라우터 등록
const authRoutes = require('./routes/auth'); const authRoutes = require('./routes/auth');
......
// middlewares/auth.js // middlewares/auth.js
exports.isLoggedIn = (req, res, next) => { // 로그인된 사용자만 접근 허용
exports.isLoggedIn = (req, res, next) => { //로그인된 사용자자만 접근허용
if (req.isAuthenticated()) { if (req.isAuthenticated()) {
return next(); 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()) { if (!req.isAuthenticated()) {
return next(); return next();
} }
res.redirect('/'); // 리다이렉트 대신 400 Bad Request 상태 반환 (필요에 따라 변경 가능)
}; res.status(400).json({ error: '이미 로그인된' });
};
\ No newline at end of file
// passport/googleStrategy.js // passport/googleStrategy.js
const { Strategy: GoogleStrategy } = require('passport-google-oauth20'); const { Strategy: GoogleStrategy } = require('passport-google-oauth20');
const User = require('../models/user'); const User = require('../models/user');
module.exports = new GoogleStrategy( module.exports = new GoogleStrategy(
{ {
clientID: process.env.GOOGLE_CLIENT_ID, clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET, clientSecret: process.env.GOOGLE_CLIENT_SECRET,
callbackURL: process.env.CALLBACK_URL, callbackURL: process.env.CALLBACK_URL,
passReqToCallback: true, // req 객체를 콜백에 전달
}, },
async (accessToken, refreshToken, profile, done) => { async (req, accessToken, refreshToken, profile, done) => {
try { try {
// 프로필에서 사용자 정보 추출 // 프로필에서 사용자 정보 추출
const email = profile.emails[0].value; const email = profile.emails[0].value;
...@@ -23,7 +23,7 @@ module.exports = new GoogleStrategy( ...@@ -23,7 +23,7 @@ module.exports = new GoogleStrategy(
return done(null, user); return done(null, user);
} catch (err) { } catch (err) {
return done(err); return done(err, null);
} }
} }
); );
...@@ -12,11 +12,10 @@ router.get( ...@@ -12,11 +12,10 @@ router.get(
}) })
); );
// Google OAuth 콜백 라우터
router.get( router.get(
'/google/callback', '/google/callback',
passport.authenticate('google', { passport.authenticate('google', {
failureRedirect: '/auth/login' failureRedirect: `${process.env.FRONT_URL}/login` // 수정된 부분
}), }),
(req, res) => { (req, res) => {
const redirectUrl = process.env.FRONT_URL; const redirectUrl = process.env.FRONT_URL;
......
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment