시드 생성
This commit is contained in:
@@ -1239,10 +1239,8 @@ router.get('/clubs/:id', async (req, res) => {
|
||||
},
|
||||
{
|
||||
model: ClubFeature,
|
||||
as: 'features',
|
||||
include: [{
|
||||
model: Feature,
|
||||
as: 'feature',
|
||||
attributes: ['id', 'name', 'code', 'description']
|
||||
}]
|
||||
},
|
||||
@@ -1280,12 +1278,13 @@ router.get('/clubs/:id', async (req, res) => {
|
||||
delete response.ClubSubscriptions;
|
||||
|
||||
// 기능 정보 포맷팅
|
||||
const formattedFeatures = response.features.map(feature => ({
|
||||
...feature.feature,
|
||||
const formattedFeatures = response.ClubFeatures.map(feature => ({
|
||||
...feature.Feature,
|
||||
enabled: feature.enabled,
|
||||
expiryDate: feature.expiryDate
|
||||
}));
|
||||
response.features = formattedFeatures;
|
||||
delete response.ClubFeatures;
|
||||
|
||||
res.json(response);
|
||||
await logActivity(req.user.id, 'VIEW_CLUB', `클럽 ${id}의 정보를 조회했습니다.`);
|
||||
@@ -1299,59 +1298,7 @@ router.get('/clubs/:id', async (req, res) => {
|
||||
router.post('/clubs', authenticateJWT, clubController.createClub);
|
||||
|
||||
// 클럽 수정
|
||||
router.put('/clubs/:id', async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const { name, description, ownerEmail, location } = req.body;
|
||||
|
||||
// 클럽 존재 여부 확인
|
||||
const club = await Club.findByPk(id);
|
||||
if (!club) {
|
||||
return res.status(404).json({ message: '클럽을 찾을 수 없습니다.' });
|
||||
}
|
||||
|
||||
// 새 모임장 정보 확인
|
||||
const newOwner = await User.findOne({ where: { email: ownerEmail } });
|
||||
if (!newOwner) {
|
||||
return res.status(404).json({ message: '모임장으로 지정할 사용자를 찾을 수 없습니다.' });
|
||||
}
|
||||
|
||||
// 트랜잭션 시작
|
||||
const t = await sequelize.transaction();
|
||||
|
||||
try {
|
||||
// 클럽 정보 업데이트
|
||||
await club.update({
|
||||
name,
|
||||
description,
|
||||
location,
|
||||
ownerId: newOwner.id
|
||||
}, { transaction: t });
|
||||
|
||||
// 활동 로그 기록
|
||||
await logActivity(req.user.id, 'UPDATE_CLUB', `클럽 "${name}"의 정보를 수정했습니다.`);
|
||||
|
||||
await t.commit();
|
||||
|
||||
// 업데이트된 클럽 정보 조회
|
||||
const updatedClub = await Club.findByPk(id, {
|
||||
include: [{
|
||||
model: User,
|
||||
as: 'owner',
|
||||
attributes: ['id', 'name', 'email']
|
||||
}]
|
||||
});
|
||||
|
||||
res.json(updatedClub);
|
||||
} catch (error) {
|
||||
await t.rollback();
|
||||
throw error;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('클럽 수정 중 오류:', error);
|
||||
res.status(500).json({ message: '클럽 수정 중 오류가 발생했습니다.' });
|
||||
}
|
||||
});
|
||||
router.put('/clubs/:id', authenticateJWT, clubController.updateClub);
|
||||
|
||||
// 클럽 기능 관리
|
||||
router.put('/clubs/:id/features', async (req, res) => {
|
||||
|
||||
@@ -3,6 +3,8 @@ const router = express.Router();
|
||||
const jwt = require('jsonwebtoken');
|
||||
const clubController = require('../controllers/clubController');
|
||||
const { authenticateJWT } = require('../middleware/authMiddleware');
|
||||
const requireFeature = require('../middleware/requireFeature');
|
||||
|
||||
|
||||
// 모든 클럽 조회
|
||||
router.get('/', clubController.getAllClubs);
|
||||
@@ -20,7 +22,7 @@ router.delete('/', authenticateJWT, clubController.deleteClub);
|
||||
router.post('/user', authenticateJWT, clubController.getUserClubs);
|
||||
|
||||
// 클럽 회원 통계 조회
|
||||
router.post('/members/stats', authenticateJWT, clubController.getMemberStats);
|
||||
router.post('/members/stats', authenticateJWT, requireFeature('statistics'), clubController.getMemberStats);
|
||||
|
||||
// 클럽 회원 목록 조회
|
||||
router.post('/members', authenticateJWT, clubController.getClubMembers);
|
||||
@@ -44,16 +46,16 @@ router.post('/meetings/last', authenticateJWT, clubController.getLastMeeting);
|
||||
router.post('/meetings/recent', authenticateJWT, clubController.getRecentMeetings);
|
||||
|
||||
// 점수 통계 조회
|
||||
router.post('/scores/stats', authenticateJWT, clubController.getScoreStats);
|
||||
router.post('/scores/stats', authenticateJWT, requireFeature('statistics'), clubController.getScoreStats);
|
||||
|
||||
// 상위 회원 목록 조회
|
||||
router.post('/members/top', authenticateJWT, clubController.getTopMembers);
|
||||
router.post('/members/top', authenticateJWT, requireFeature('statistics'), clubController.getTopMembers);
|
||||
|
||||
// 새 클럽 생성
|
||||
router.post('/create', authenticateJWT, clubController.createClub);
|
||||
|
||||
// 클럽 통계 조회
|
||||
router.post('/statistics', authenticateJWT, clubController.getStatistics);
|
||||
router.post('/statistics', authenticateJWT, requireFeature('statistics'), clubController.getStatistics);
|
||||
|
||||
// 클럽 기능 관리
|
||||
router.put('/features', authenticateJWT, clubController.manageClubFeatures);
|
||||
|
||||
@@ -2,28 +2,29 @@ const express = require('express');
|
||||
const router = express.Router();
|
||||
const eventController = require('../controllers/eventController');
|
||||
const { authenticateJWT } = require('../middleware/authMiddleware');
|
||||
const requireFeature = require('../middleware/requireFeature');
|
||||
|
||||
// 이벤트 기본 CRUD
|
||||
router.post('/', authenticateJWT, eventController.getAllEvents);
|
||||
router.get('/:id', authenticateJWT, eventController.getEventById);
|
||||
router.post('/create', authenticateJWT, eventController.createEvent);
|
||||
router.put('/:id', authenticateJWT, eventController.updateEvent);
|
||||
router.delete('/:id', authenticateJWT, eventController.deleteEvent);
|
||||
router.post('/', authenticateJWT, requireFeature('event_management'), eventController.getAllEvents);
|
||||
router.get('/:id', authenticateJWT, requireFeature('event_management'), eventController.getEventById);
|
||||
router.post('/create', authenticateJWT, requireFeature('event_management'), eventController.createEvent);
|
||||
router.put('/:id', authenticateJWT, requireFeature('event_management'), eventController.updateEvent);
|
||||
router.delete('/:id', authenticateJWT, requireFeature('event_management'), eventController.deleteEvent);
|
||||
|
||||
// 이벤트 참가자 관리
|
||||
router.post('/:id/participants/list', authenticateJWT, eventController.getEventParticipants);
|
||||
router.post('/:id/participants', authenticateJWT, eventController.addEventParticipant);
|
||||
router.put('/:id/participants', authenticateJWT, eventController.updateEventParticipant);
|
||||
router.delete('/:id/participants', authenticateJWT, eventController.deleteEventParticipant);
|
||||
router.post('/:id/participants/list', authenticateJWT, requireFeature('event_management'), eventController.getEventParticipants);
|
||||
router.post('/:id/participants', authenticateJWT, requireFeature('event_management'), eventController.addEventParticipant);
|
||||
router.put('/:id/participants', authenticateJWT, requireFeature('event_management'), eventController.updateEventParticipant);
|
||||
router.delete('/:id/participants', authenticateJWT, requireFeature('event_management'), eventController.deleteEventParticipant);
|
||||
|
||||
// 이벤트 점수 관리
|
||||
router.get('/:id/scores', authenticateJWT, eventController.getEventScores);
|
||||
router.post('/:id/scores', authenticateJWT, eventController.addEventScore);
|
||||
router.put('/:id/scores/:scoreId', authenticateJWT, eventController.updateEventScore);
|
||||
router.delete('/:id/scores/:scoreId', authenticateJWT, eventController.deleteEventScore);
|
||||
router.delete('/:id/participants/:participantId/scores', authenticateJWT, eventController.deleteParticipantScores);
|
||||
router.get('/:id/scores', authenticateJWT, requireFeature('event_management'), eventController.getEventScores);
|
||||
router.post('/:id/scores', authenticateJWT, requireFeature('event_management'), eventController.addEventScore);
|
||||
router.put('/:id/scores/:scoreId', authenticateJWT, requireFeature('event_management'), eventController.updateEventScore);
|
||||
router.delete('/:id/scores/:scoreId', authenticateJWT, requireFeature('event_management'), eventController.deleteEventScore);
|
||||
router.delete('/:id/participants/:participantId/scores', authenticateJWT, requireFeature('event_management'), eventController.deleteParticipantScores);
|
||||
|
||||
// 사용자별 이벤트 관리
|
||||
router.get('/user/events', authenticateJWT, eventController.getUserEvents);
|
||||
router.get('/user/events', authenticateJWT, requireFeature('event_management'), eventController.getUserEvents);
|
||||
|
||||
module.exports = router;
|
||||
@@ -3,6 +3,7 @@ const router = express.Router();
|
||||
const featureController = require('../controllers/featureController');
|
||||
const { authenticateJWT } = require('../middleware/authMiddleware');
|
||||
|
||||
|
||||
// 기본 기능 관리
|
||||
router.get('/', authenticateJWT, featureController.getFeatures);
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const { authenticateJWT } = require('../middleware/authMiddleware');
|
||||
|
||||
const menuController = require('../controllers/menuController');
|
||||
|
||||
// 사용자의 접근 가능한 메뉴 목록 조회
|
||||
|
||||
Reference in New Issue
Block a user