Files
PM_test/passport/index.js
2026-06-12 17:14:03 +09:00

67 lines
2.6 KiB
JavaScript

const passport = require('passport');
const local = require('./localStrategy');
const axios = require('axios');
const pool = require('../db/pool.js');
module.exports = () =>{
passport.serializeUser((user, done)=>{
done(null, user.user_id);
});
passport.deserializeUser(async (id, done)=>{
let client;
try {
client = await pool.connect();
const localQuery = `SELECT * FROM ver4.tb_user WHERE user_id ILIKE $1 AND (is_resigned = FALSE OR is_resigned IS NULL)`;
const localRes = await client.query(localQuery, [id]);
if (localRes.rows.length > 0) {
const user = localRes.rows[0];
const formattedUser = {
user_id: user.user_id,
user_nm: user.user_nm,
group: user.group,
company: user.company || '한맥기술',
dept: user.dept || '개발본부',
position: user.position || '부장',
permission: (user.group === 'super' || user.group === 'dev' || user.group === 'USER_GROUP_super') ? 1535 : null,
bookmark: user.bookmark || ''
};
return done(null, formattedUser);
}
} catch (dbErr) {
console.error('🔒 [passport/index.js] Local DB deserialize check error:', dbErr);
} finally {
if (client) {
client.release();
}
}
try{
let res = await axios.post(`http://gsim.hanmaceng.co.kr:5151/login/deserialize`,{user_id:id});
// let res = await axios.post(`https://pm-auth.hmac.kr/login/deserialize`,{user_id:id});
if(res.data.user){
if(!res.data.user.permission||res.data.user.permission == null){
switch(res.data.user.group){
case 'master':
case 'dev':
res.data.user.permission = 1535;
break;
case 'super':
res.data.user.permission = 815;
break;
default:
res.data.user.permission = null;
break;
}
}
done(null, res.data.user);
}else{
done(null, undefined, '🔒 [passport/index.js] passport_deserializeUser_error');
}
}catch(err){
console.error('🔒 [passport/index.js] passport_deserializeUser_error :', err);
done(err);
}
})
local();
}