From 311fd6023510ff45b2eb1e04325764156ef5052c Mon Sep 17 00:00:00 2001 From: tpgus2603 <kakaneymar2424@gmail.com> Date: Sun, 8 Dec 2024 20:11:14 +0900 Subject: [PATCH] =?UTF-8?q?feature:=20=ED=9A=8C=EC=9B=90=20=ED=83=88?= =?UTF-8?q?=ED=87=B4=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80(#25)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 8 +-- routes/auth.js | 50 ------------- routes/authRoute.js | 84 ++++++++++++++++++++++ routes/{friend.js => friendRoute.js} | 0 routes/{inviteRoutes.js => inviteRoute.js} | 0 routes/{schedule.js => scheduleRoute.js} | 0 routes/{session.js => sessionRoute.js} | 0 7 files changed, 88 insertions(+), 54 deletions(-) delete mode 100644 routes/auth.js create mode 100644 routes/authRoute.js rename routes/{friend.js => friendRoute.js} (100%) rename routes/{inviteRoutes.js => inviteRoute.js} (100%) rename routes/{schedule.js => scheduleRoute.js} (100%) rename routes/{session.js => sessionRoute.js} (100%) diff --git a/app.js b/app.js index 1841e8c..941531d 100644 --- a/app.js +++ b/app.js @@ -58,13 +58,13 @@ app.use(flash()); //app.set('trust proxy', 1); console.log('MongoDB URI:', process.env.MONGO_URI); //라우터 등록 -const authRoutes = require('./routes/auth'); +const authRoutes = require('./routes/authRoute'); app.use('/api/auth', authRoutes); -const scheduleRoutes = require('./routes/schedule'); +const scheduleRoutes = require('./routes/scheduleRoute'); app.use('/api/schedule', scheduleRoutes); -const friendRoutes = require('./routes/friend'); +const friendRoutes = require('./routes/friendRoute'); app.use('/api/friend', friendRoutes); const meetingRoutes = require('./routes/meetingRoute'); @@ -76,7 +76,7 @@ app.use('/api/chat', chatRoutes); const memberRoutes = require('./routes/memberRoute'); app.use('/api/member', memberRoutes); -const sessionRouter = require('./routes/session'); +const sessionRouter = require('./routes/sessionRoute'); app.use('/api/session', sessionRouter); // 스케줄 클리너 초기화 diff --git a/routes/auth.js b/routes/auth.js deleted file mode 100644 index 186b15d..0000000 --- a/routes/auth.js +++ /dev/null @@ -1,50 +0,0 @@ -const express = require('express'); -const passport = require('passport'); - -const router = express.Router(); - -// Google OAuth 로그인 라우터 -router.get( - '/login', - passport.authenticate('google', { - scope: ['profile', 'email'], // 사용자 정보 요청을 위한 scope - failureRedirect: `${process.env.FRONT_URL}/login` - }) -); - -router.get( - '/google/callback', - passport.authenticate('google', { - failureRedirect: `${process.env.FRONT_URL}/login` // 수정된 부분 - }), - (req, res) => { - const redirectUrl = process.env.FRONT_URL; - req.session.save((err) => { - if (err) { - console.error('세션 저장 오류:', err); - return res.status(500).json({ error: '서버 오류' }); - } - res.redirect(redirectUrl); - }); - } -); - -// 로그아웃 라우터 -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 diff --git a/routes/authRoute.js b/routes/authRoute.js new file mode 100644 index 0000000..e6f2d55 --- /dev/null +++ b/routes/authRoute.js @@ -0,0 +1,84 @@ + const express = require('express'); + const passport = require('passport'); + + const router = express.Router(); + + // Google OAuth 로그인 라우터 + router.get( + '/login', + passport.authenticate('google', { + scope: ['profile', 'email'], // 사용자 정보 요청을 위한 scope + failureRedirect: `${process.env.FRONT_URL}/login` + }) + ); + + router.get( + '/google/callback', + passport.authenticate('google', { + failureRedirect: `${process.env.FRONT_URL}/login` + }), + (req, res) => { + const redirectUrl = process.env.FRONT_URL; + req.session.save((err) => { + if (err) { + console.error('세션 저장 오류:', err); + return res.status(500).json({ error: '서버 오류' }); + } + res.redirect(redirectUrl); + }); + } + ); + + // 로그아웃 라우터 + 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); + } + }); + + // 사용자 삭제 라우터 +router.delete('/leave', async (req, res) => { + try { + // 인증된 사용자 확인 + if (!req.user) { + return res.status(401).json({ error: '인증되지 않은 사용자입니다.' }); + } + + const userId = req.user.id; + + // 사용자 삭제 + const deleted = await User.destroy({ + where: { id: userId } + }); + + if (!deleted) { + return res.status(404).json({ error: '사용자를 찾을 수 없습니다.' }); + } + + // 세션 삭제 + req.session.destroy((err) => { + if (err) { + console.error('세션 삭제 오류:', err); + return res.status(500).json({ error: '서버 오류' }); + } + // 성공 메시지 반환 (리다이렉트 대신 JSON 응답) + res.status(200).json({ message: '사용자 계정이 성공적으로 삭제되었습니다.' }); + }); + } catch (error) { + console.error('사용자 삭제 오류:', error); + res.status(500).json({ error: '서버 오류' }); + } +}); + + module.exports = router; \ No newline at end of file diff --git a/routes/friend.js b/routes/friendRoute.js similarity index 100% rename from routes/friend.js rename to routes/friendRoute.js diff --git a/routes/inviteRoutes.js b/routes/inviteRoute.js similarity index 100% rename from routes/inviteRoutes.js rename to routes/inviteRoute.js diff --git a/routes/schedule.js b/routes/scheduleRoute.js similarity index 100% rename from routes/schedule.js rename to routes/scheduleRoute.js diff --git a/routes/session.js b/routes/sessionRoute.js similarity index 100% rename from routes/session.js rename to routes/sessionRoute.js -- GitLab