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(); }