Skip to content
Snippets Groups Projects
Commit 39c45e32 authored by tpgus2603's avatar tpgus2603
Browse files

test: 로컬환경 테스트용 리팩토링

parent 73a5574a
No related branches found
No related tags found
1 merge request!42[#25] 배포코드 master브랜치로 이동
...@@ -16,40 +16,50 @@ const app = express(); ...@@ -16,40 +16,50 @@ const app = express();
app.use(morgan('dev')); //로깅용 app.use(morgan('dev')); //로깅용
// CORS 설정
// CORS 설정 (로컬 환경용)
app.use( app.use(
cors({ cors({
origin: 'http://localhost:3000', origin: process.env.FRONT_URL,
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
allowedHeaders: ['Content-Type', 'Authorization'], allowedHeaders: ['Content-Type', 'Authorization'],
credentials: true, credentials: true,
}) })
); );
// 세션 설정 (로컬 테스트용)
// 미들웨어 설정
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
// 세션 설정
app.use( app.use(
session({ session({
secret: 'your_session_secret', secret: 'your-secret-key',
resave: false, resave: false,
saveUninitialized: false, saveUninitialized: false,
rolling: true,
cookie: {
httpOnly: true,
secure: false, // HTTPS가 아닌 환경에서는 false로 설정
maxAge: 60 * 60 * 1000,
sameSite: 'lax',
},
}) })
); );
// 미들웨어 설정
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
// Passport 초기화 및 세션 연결 // Passport 초기화 및 세션 연결
app.use(passport.initialize()); app.use(passport.initialize());
app.use(passport.session()); app.use(passport.session());
app.use(flash()); app.use(flash());
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');
app.use('/auth', authRoutes); app.use('/api/auth', authRoutes);
const scheduleRoutes = require('./routes/schedule'); const scheduleRoutes = require('./routes/schedule');
app.use('/api/schedule', scheduleRoutes); app.use('/api/schedule', scheduleRoutes);
...@@ -66,6 +76,9 @@ app.use('/api/chat', chatRoutes); ...@@ -66,6 +76,9 @@ app.use('/api/chat', chatRoutes);
const memberRoutes = require('./routes/memberRoute'); const memberRoutes = require('./routes/memberRoute');
app.use('/api/member', memberRoutes); app.use('/api/member', memberRoutes);
const sessionRouter = require('./routes/session');
app.use('/api/session', sessionRouter);
// 스케줄 클리너 초기화 // 스케줄 클리너 초기화
initScheduleCleaner(); initScheduleCleaner();
...@@ -86,4 +99,4 @@ const PORT = process.env.PORT || 3000; ...@@ -86,4 +99,4 @@ const PORT = process.env.PORT || 3000;
console.error('❌ 서버 시작 중 오류 발생:', error); console.error('❌ 서버 시작 중 오류 발생:', error);
process.exit(1); process.exit(1);
} }
})(); })();
\ No newline at end of file
// routes/auth.js
const express = require('express'); const express = require('express');
const passport = require('passport'); const passport = require('passport');
const router = express.Router(); const router = express.Router();
// GET /auth/login // Google OAuth 로그인 라우터
router.get('/login', (req, res) => {
res.send('<a href="/auth/google">Log in with Google</a>');
});
// GET /auth/logout
router.get('/logout', (req, res) => {
req.logout(() => {
res.redirect('/');
});
});
// GET /auth/google
router.get( router.get(
'/google', '/login',
passport.authenticate('google', { scope: ['profile', 'email'] }) passport.authenticate('google', {
scope: ['profile', 'email'], // 사용자 정보 요청을 위한 scope
failureRedirect: `${process.env.FRONT_URL}/login`
})
); );
// GET /auth/google/callback // Google OAuth 콜백 라우터
router.get( router.get(
'/google/callback', '/google/callback',
passport.authenticate('google', { failureRedirect: '/auth/login' }), passport.authenticate('google', {
failureRedirect: '/auth/login'
}),
(req, res) => { (req, res) => {
res.redirect('/'); const redirectUrl = process.env.FRONT_URL;
req.session.save((err) => {
if (err) {
console.error('세션 저장 오류:', err);
return res.status(500).json({ error: '서버 오류' });
}
res.redirect(redirectUrl);
});
} }
); );
module.exports = router; // 로그아웃 라우터
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);
}
});
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