Skip to content
Snippets Groups Projects
Commit 311fd602 authored by tpgus2603's avatar tpgus2603
Browse files

feature: 회원 탈퇴 기능 추가(#25)

parent 6fd4ae8b
Branches
No related tags found
2 merge requests!42[#25] 배포코드 master브랜치로 이동,!39[#25] 회원탈퇴로직추가, 파일이름 변경 ,오류수정
...@@ -58,13 +58,13 @@ app.use(flash()); ...@@ -58,13 +58,13 @@ 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/authRoute');
app.use('/api/auth', authRoutes); app.use('/api/auth', authRoutes);
const scheduleRoutes = require('./routes/schedule'); const scheduleRoutes = require('./routes/scheduleRoute');
app.use('/api/schedule', scheduleRoutes); app.use('/api/schedule', scheduleRoutes);
const friendRoutes = require('./routes/friend'); const friendRoutes = require('./routes/friendRoute');
app.use('/api/friend', friendRoutes); app.use('/api/friend', friendRoutes);
const meetingRoutes = require('./routes/meetingRoute'); const meetingRoutes = require('./routes/meetingRoute');
...@@ -76,7 +76,7 @@ app.use('/api/chat', chatRoutes); ...@@ -76,7 +76,7 @@ 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'); const sessionRouter = require('./routes/sessionRoute');
app.use('/api/session', sessionRouter); app.use('/api/session', sessionRouter);
// 스케줄 클리너 초기화 // 스케줄 클리너 초기화
......
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
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
File moved
File moved
File moved
File moved
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment