@htilssu/wowo
Version:
Module tương tác với ứng dụng e-wallet môn học CNPM-DAPM
59 lines • 1.85 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useSSOCallback = useSSOCallback;
const axios_1 = __importDefault(require("axios"));
const jwt_1 = require("../jwt");
const req = axios_1.default.create({});
/**
* Hàm đăng ký middleware cho việc xác thực SSO bao gồm:
* - Xác thực token
* - Lưu token vào cookie (sso callback)
* ```js
* const {useSSOCallback} = require('@htilssu/sso');
* const express = require('express');
*
* const app = express();
*
* useSSOCallback(app); //Add middleware handle verify token
* ```
* @remarks Hàm này phải được gọi sau khi sử dụng parseCookie không sẽ throw ra lỗi
* @param app express instance
*/
function useSSOCallback(app) {
app.use(async (req, res, next) => {
const token = req.cookies["Token"];
if (!token) {
// @ts-ignore
res.locals.user = null;
next();
return;
}
const payload = (await (0, jwt_1.verify)(token))?.payload;
if (!payload) {
// @ts-ignore
res.locals.user = null;
next();
return;
}
// @ts-ignore
if (payload.role === 'user') {
payload.id = payload.userId;
}
else {
payload.id = payload.partnerId;
}
res.locals.user = payload;
next();
});
app.all('/auth/sso', (req, res, next) => {
const token = req.query.Token?.toString();
const body = req.body;
// TODO: add more handle
res.setHeader('Set-Cookie', `Token=${token}; HttpOnly; Secure;`);
next();
});
}
//# sourceMappingURL=express_router.js.map