UNPKG

@topgroup/diginext

Version:

A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.

40 lines (39 loc) 2.23 kB
"use strict"; 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;