Skip to content
Snippets Groups Projects
Commit 2235263b authored by 세현 임's avatar 세현 임
Browse files

[#25] 회원탈퇴로직추가, 파일이름 변경 ,오류수정

parents d7c996e5 311fd602
Branches develop
No related tags found
2 merge requests!42[#25] 배포코드 master브랜치로 이동,!39[#25] 회원탈퇴로직추가, 파일이름 변경 ,오류수정
......@@ -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);
// 스케줄 클리너 초기화
......
......@@ -10,35 +10,106 @@ const Invite =require('./invite')
const MeetingParticipant = require('./meetingParticipant');
// const ChatRooms = require('./ChatRooms');
// 관계 설정
Friend.belongsTo(User, { foreignKey: 'requester_id', as: 'requester' }); // 친구 요청을 보낸 사용자
Friend.belongsTo(User, { foreignKey: 'receiver_id', as: 'receiver' }); // 친구 요청을 받은 사용자
// Friend 관계 설정
Friend.belongsTo(User, {
foreignKey: 'requester_id',
as: 'requester',
onDelete: 'CASCADE',
});
Friend.belongsTo(User, {
foreignKey: 'receiver_id',
as: 'receiver',
onDelete: 'CASCADE',
});
User.hasMany(Friend, {
foreignKey: 'requester_id',
as: 'sentRequests',
onDelete: 'CASCADE',
});
User.hasMany(Friend, {
foreignKey: 'receiver_id',
as: 'receivedRequests',
onDelete: 'CASCADE',
});
User.hasMany(Friend, { foreignKey: 'requester_id', as: 'sentRequests' }); // 친구 요청을 보낸 목록
User.hasMany(Friend, { foreignKey: 'receiver_id', as: 'receivedRequests' }); // 친구 요청을 받은 목록
// 연관 관계 설정
Meeting.belongsTo(User, { foreignKey: 'created_by', as: 'creator' });
User.hasMany(Meeting, { foreignKey: 'created_by', as: 'meetings' });
// Meeting 관계 설정
Meeting.belongsTo(User, {
foreignKey: 'created_by',
as: 'creator',
onDelete: 'SET NULL',
});
User.hasMany(Meeting, {
foreignKey: 'created_by',
as: 'meetings',
onDelete: 'SET NULL',
});
MeetingParticipant.belongsTo(Meeting, { foreignKey: 'meeting_id', as: 'meeting' });
Meeting.hasMany(MeetingParticipant, { foreignKey: 'meeting_id', as: 'participants' });
// MeetingParticipant 관계 설정
MeetingParticipant.belongsTo(Meeting, {
foreignKey: 'meeting_id',
as: 'meeting',
onDelete: 'CASCADE',
});
Meeting.hasMany(MeetingParticipant, {
foreignKey: 'meeting_id',
as: 'participants',
onDelete: 'CASCADE',
});
MeetingParticipant.belongsTo(User, {
foreignKey: 'user_id',
as: 'user',
onDelete: 'CASCADE',
});
User.hasMany(MeetingParticipant, {
foreignKey: 'user_id',
as: 'meetingParticipations',
onDelete: 'CASCADE',
});
MeetingParticipant.belongsTo(User, { foreignKey: 'user_id', as: 'user' });
User.hasMany(MeetingParticipant, { foreignKey: 'user_id', as: 'meetingParticipations' });
// Schedule 관계 설정
Schedule.belongsTo(User, {
foreignKey: 'user_id',
as: 'user',
onDelete: 'CASCADE',
});
User.hasMany(Schedule, {
foreignKey: 'user_id',
as: 'schedules',
onDelete: 'CASCADE',
});
Schedule.belongsTo(User, { foreignKey: 'user_id', as: 'user' });
User.hasMany(Schedule, { foreignKey: 'user_id', as: 'schedules' });
// Invite 관계 설정
Invite.belongsTo(Meeting, {
foreignKey: 'meeting_id',
as: 'meeting',
onDelete: 'CASCADE',
});
Invite.belongsTo(User, {
foreignKey: 'inviter_id',
as: 'inviter',
onDelete: 'CASCADE',
});
Invite.belongsTo(User, {
foreignKey: 'invitee_id',
as: 'invitee',
onDelete: 'CASCADE',
});
User.hasMany(Invite, {
foreignKey: 'inviter_id',
as: 'sentInvites',
onDelete: 'CASCADE',
});
User.hasMany(Invite, {
foreignKey: 'invitee_id',
as: 'receivedInvites',
onDelete: 'CASCADE',
});
Meeting.hasMany(Invite, {
foreignKey: 'meeting_id',
as: 'invites',
onDelete: 'CASCADE',
});
FcmToken.belongsTo(User, { foreignKey: 'userId', as: 'user' });
User.hasMany(FcmToken, { foreignKey: 'userId', as: 'fcmTokenList' });
Invite.belongsTo(Meeting, { foreignKey: 'meeting_id', as: 'meeting' });
Invite.belongsTo(User, { foreignKey: 'inviter_id', as: 'inviter' }); // 초대한 사용자
Invite.belongsTo(User, { foreignKey: 'invitee_id', as: 'invitee' }); // 초대받은 사용자
User.hasMany(Invite, { foreignKey: 'inviter_id', as: 'sentInvites' }); // 보낸 초대 목록
User.hasMany(Invite, { foreignKey: 'invitee_id', as: 'receivedInvites' }); // 받은 초대 목록
Meeting.hasMany(Invite, { foreignKey: 'meeting_id', as: 'invites' }); // 해당 미팅의 모든 초대
module.exports = {
sequelize,
......
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