초기 PM 소스 전체 업로드
This commit is contained in:
44
oauth/oauthController.js
Normal file
44
oauth/oauthController.js
Normal file
@@ -0,0 +1,44 @@
|
||||
const crypto = require('crypto');
|
||||
const oauthService = require('./oauthService');
|
||||
const axios = require('axios');
|
||||
|
||||
// 1. 로그인 여부 검증 미들웨어
|
||||
exports.isLoggedIn = async (req, res, next) => {
|
||||
if (req.session?.user || (req.isAuthenticated && req.isAuthenticated())) {
|
||||
return next();
|
||||
}
|
||||
console.log('🚥 [oauthController] User not authenticated. Redirecting to login page.');
|
||||
return res.redirect('/user/login?path=' + encodeURIComponent(req.originalUrl));
|
||||
};
|
||||
|
||||
|
||||
// 2. OAuth Callback 핸들러 (로컬 개발 환경에서는 직접 호출되지 않음)
|
||||
exports.handleCallback = async (req, res) => {
|
||||
const { code, state, next } = req.query;
|
||||
try {
|
||||
const { user } = await oauthService.exchangeToken(code, state, req.hostname);
|
||||
req.session.user = user;
|
||||
req.user = user;
|
||||
return res.redirect(next || "/");
|
||||
} catch (err) {
|
||||
console.error("Token exchange error:", err);
|
||||
return res.status(500).send("토큰 처리 실패");
|
||||
}
|
||||
};
|
||||
|
||||
// 3. 사용자 정보 역직렬화 (GSIM 연동 우회 및 가상 최고권한 권한 설정)
|
||||
exports.deserializeUser = async (req, res, next) => {
|
||||
if (req.session?.user) {
|
||||
req.user = {
|
||||
user_id: req.session.user.userId,
|
||||
user_nm: req.session.user.user_nm,
|
||||
group: req.session.user.group,
|
||||
company: '한맥기술',
|
||||
dept: '개발본부',
|
||||
position: '부장',
|
||||
permission: 1535, // master/dev급 세부 권한 비트플래그
|
||||
bookmark: ''
|
||||
};
|
||||
}
|
||||
next();
|
||||
};
|
||||
Reference in New Issue
Block a user