refactor: worker_id → user_id 전체 마이그레이션 (Phase 1-4)
sso_users.user_id를 단일 식별자로 통합. JWT에서 worker_id 제거, department_id/is_production 추가. 백엔드 15개 모델, 11개 컨트롤러, 4개 서비스, 7개 라우트, 프론트엔드 32+ JS/11+ HTML 변환. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -12,10 +12,10 @@ const vacationRequestController = {
|
||||
*/
|
||||
async createRequest(req, res) {
|
||||
try {
|
||||
const { worker_id, vacation_type_id, start_date, end_date, days_used, reason } = req.body;
|
||||
const { user_id, vacation_type_id, start_date, end_date, days_used, reason } = req.body;
|
||||
const requested_by = req.user.user_id;
|
||||
|
||||
if (!worker_id || !vacation_type_id || !start_date || !end_date || !days_used) {
|
||||
if (!user_id || !vacation_type_id || !start_date || !end_date || !days_used) {
|
||||
return res.status(400).json({ success: false, message: '필수 필드가 누락되었습니다' });
|
||||
}
|
||||
|
||||
@@ -24,13 +24,13 @@ const vacationRequestController = {
|
||||
}
|
||||
|
||||
// 기간 중복 체크
|
||||
const overlapRows = await vacationRequestModel.checkOverlap(worker_id, start_date, end_date);
|
||||
const overlapRows = await vacationRequestModel.checkOverlap(user_id, start_date, end_date);
|
||||
if (overlapRows[0].count > 0) {
|
||||
return res.status(400).json({ success: false, message: '해당 기간에 이미 신청된 휴가가 있습니다' });
|
||||
}
|
||||
|
||||
const result = await vacationRequestModel.create({
|
||||
worker_id, vacation_type_id, start_date, end_date,
|
||||
user_id, vacation_type_id, start_date, end_date,
|
||||
days_used, reason: reason || null, status: 'pending', requested_by
|
||||
});
|
||||
|
||||
@@ -51,7 +51,7 @@ const vacationRequestController = {
|
||||
async getAllRequests(req, res) {
|
||||
try {
|
||||
const filters = {
|
||||
worker_id: req.query.worker_id,
|
||||
user_id: req.query.user_id,
|
||||
status: req.query.status,
|
||||
start_date: req.query.start_date,
|
||||
end_date: req.query.end_date,
|
||||
@@ -60,8 +60,8 @@ const vacationRequestController = {
|
||||
|
||||
// 일반 사용자는 자신의 신청만 조회 가능
|
||||
if (req.user.access_level !== 'system') {
|
||||
if (req.user.worker_id) {
|
||||
filters.worker_id = req.user.worker_id;
|
||||
if (req.user.user_id) {
|
||||
filters.user_id = req.user.user_id;
|
||||
} else {
|
||||
return res.status(403).json({ success: false, message: '권한이 없습니다' });
|
||||
}
|
||||
@@ -88,7 +88,7 @@ const vacationRequestController = {
|
||||
|
||||
const request = results[0];
|
||||
|
||||
if (req.user.access_level !== 'system' && req.user.worker_id !== request.worker_id) {
|
||||
if (req.user.access_level !== 'system' && req.user.user_id !== request.user_id) {
|
||||
return res.status(403).json({ success: false, message: '권한이 없습니다' });
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ const vacationRequestController = {
|
||||
|
||||
const existingRequest = results[0];
|
||||
|
||||
if (req.user.access_level !== 'system' && req.user.worker_id !== existingRequest.worker_id) {
|
||||
if (req.user.access_level !== 'system' && req.user.user_id !== existingRequest.user_id) {
|
||||
return res.status(403).json({ success: false, message: '권한이 없습니다' });
|
||||
}
|
||||
|
||||
@@ -134,7 +134,7 @@ const vacationRequestController = {
|
||||
const newEndDate = end_date || existingRequest.end_date;
|
||||
|
||||
const overlapRows = await vacationRequestModel.checkOverlap(
|
||||
existingRequest.worker_id, newStartDate, newEndDate, id
|
||||
existingRequest.user_id, newStartDate, newEndDate, id
|
||||
);
|
||||
if (overlapRows[0].count > 0) {
|
||||
return res.status(400).json({ success: false, message: '해당 기간에 이미 신청된 휴가가 있습니다' });
|
||||
@@ -163,7 +163,7 @@ const vacationRequestController = {
|
||||
|
||||
const existingRequest = results[0];
|
||||
|
||||
if (req.user.access_level !== 'system' && req.user.worker_id !== existingRequest.worker_id) {
|
||||
if (req.user.access_level !== 'system' && req.user.user_id !== existingRequest.user_id) {
|
||||
return res.status(403).json({ success: false, message: '권한이 없습니다' });
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user