@topgroup/diginext
Version:
A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.
40 lines (39 loc) • 2.23 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const dayjs_1 = __importDefault(require("dayjs"));
const relativeTime_1 = __importDefault(require("dayjs/plugin/relativeTime"));
const response_1 = require("diginext-utils/dist/response");
const express_1 = __importDefault(require("express"));
const lodash_1 = require("lodash");
const interfaces_1 = require("../../interfaces");
// Auth with JWT
const auth_jwt_1 = __importDefault(require("../../middlewares/auth-jwt"));
const jwtStrategy_1 = require("../../modules/passports/jwtStrategy");
const mongodb_1 = require("../../plugins/mongodb");
// Auth with session
// import { authenticate } from "../../middlewares/authenticate";
dayjs_1.default.extend(relativeTime_1.default);
const router = express_1.default.Router();
router.get("/", auth_jwt_1.default, async (req, res, next) => {
var _a, _b;
if ((0, lodash_1.isEmpty)(req.user))
return (0, interfaces_1.respondFailure)({ msg: `UNAUTHENTICATED.` });
const { user, workspace } = req;
// 1. Extract token info
let access_token = ((_a = user.token) === null || _a === void 0 ? void 0 : _a.access_token) || req.query.access_token || req.cookies["x-auth-cookie"] || ((_b = req.headers.authorization) === null || _b === void 0 ? void 0 : _b.split(" ")[1]);
let refresh_token = req.query.refresh_token;
if ((0, lodash_1.isEmpty)(access_token) || (0, lodash_1.isEmpty)(refresh_token))
return (0, interfaces_1.respondFailure)({ msg: `Permissions denied.` });
const payload = { id: mongodb_1.MongoDB.toString(user._id), workspaceId: mongodb_1.MongoDB.toString(workspace._id), exp: req.user.token.expiredTimestamp };
const tokenInfo = await (0, jwtStrategy_1.extractAccessTokenInfo)({ access_token, refresh_token }, payload);
// 2. Assign token to user
user.token = tokenInfo.token;
// 3. Assign token to response headers
res.cookie("x-auth-cookie", access_token);
res.header("Authorization", `Bearer ${access_token}`);
return response_1.Response.succeed(res, user);
});
exports.default = router;