This commit is contained in:
Warunee Tamkoo 2025-02-10 11:30:30 +07:00
parent e3fc035a07
commit 9ec34b1522

24
sso.js
View file

@ -82,19 +82,15 @@ app.post("/api/v1/sso/kcauth", async (req, res) => {
const publicKeyLanding = fs.readFileSync(`./BMA.pub.pem`, "utf8"); const publicKeyLanding = fs.readFileSync(`./BMA.pub.pem`, "utf8");
const clientSecret = process.env.KC_CLIENT_SECRET; const clientSecret = process.env.KC_CLIENT_SECRET;
const clientId = process.env.KC_CLIENT_ID; const clientId = process.env.KC_CLIENT_ID;
const username = req.body.uid;
const cookies = req.cookies; const cookies = req.cookies;
const tokenSSO = cookies[cookieName]; const tokenSSO = cookies[cookieName];
if (!tokenSSO) { if (!tokenSSO && !uid) {
res.status(401).send("Unauthorized"); res.status(401).send("Unauthorized");
return; return;
} } else if (tokenSSO) {
const oldssotoken = cookies['oldssotoken'];
if (tokenSSO !== oldssotoken) {
let decodedToken = ""; let decodedToken = "";
if (useBMA) { if (useBMA) {
decodedToken = jwt.decode(tokenSSO); decodedToken = jwt.decode(tokenSSO);
@ -104,8 +100,14 @@ app.post("/api/v1/sso/kcauth", async (req, res) => {
let d = JSON.parse(JSON.stringify(decodedToken)); let d = JSON.parse(JSON.stringify(decodedToken));
// console.log("==== username from cookies ====", d); // console.log("==== username from cookies ====", d);
const username = d.username; username = d.username;
}
const oldssotoken = cookies['oldssotoken'];
const oldcid = cookies['oldcid'];
if (tokenSSO !== oldssotoken && username !== oldcid) {
// create body for admin token // create body for admin token
let body = { let body = {
client_id: clientId, client_id: clientId,
@ -156,6 +158,12 @@ app.post("/api/v1/sso/kcauth", async (req, res) => {
httpOnly: true, httpOnly: true,
}); });
res.cookie('oldcid', username, {
maxAge: 1000 * 60 * 60 * 24, // กำหนด timeout หน่วยเป็น millisecond
path: "/",
httpOnly: true,
});
res.status(200).send(tokenResponse.data); res.status(200).send(tokenResponse.data);
} else { } else {
res.status(200).send({ isLogin: true }); res.status(200).send({ isLogin: true });