UNPKG

rewardwee_auth_access

Version:

auth verify access for all microservices

104 lines (103 loc) 3.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.extractTokenContent = exports.response = void 0; const jsonwebtoken_1 = __importDefault(require("jsonwebtoken")); const stream_1 = require("stream"); const mongoose_1 = __importDefault(require("mongoose")); let myObjectId = mongoose_1.default.Types.ObjectId; //let dsecret = getGlobalEnv("JWT_SECRET") as string; //console.log({dsecret}) /** * A function that returns http response as a stream. * * @param res - response object. * * @param data - data to be sent as response. * * @returns - a void promise. * * @remarks - this function is used to send response to the client. * * @beta * * * */ const response = (res, data) => { data.status = data.status == undefined || data.status == null ? 500 : data.status; let dataToJson = JSON.stringify(data); //res.status(data.status).json(data); res.writeHead(data.status, { 'Content-Length': Buffer.byteLength(dataToJson), 'Content-Type': 'application/json' }); var stream = new stream_1.Readable(); stream.push(dataToJson); // stream apparently does not accept objects stream.push(null); // this stream.pipe(res); return; }; exports.response = response; /** * A function that extracts the content of a jwt token. * * @param token - token to be extracted. * @returns - a promise that resolves to a RESPONSE_TYPE object. * * * @remarks * * This function uses the jsonwebtoken library to extract the content of the token. * * @beta * * @example * * * extractTokenContent(token) * .then((done: RESPONSE_TYPE)=>{ * console.log(done); * }) * .catch((err: any)=>{ * console.log(err); * }) * */ const extractTokenContent = (token, secret) => { // let secret = getGlobalEnv("JWT_SECRET") as string; return new Promise((resolve, reject) => { try { const decoded = jsonwebtoken_1.default.verify(token, secret); if (decoded && typeof decoded === 'object' && 'id' in decoded && 'email' in decoded && 'time' in decoded) { let token = { id: decoded.id, email: decoded.email, time: decoded.time }; let done = { data: [decoded], message: "token verified.", status: 200, statusCode: "SUCCESS" }; resolve(done); return; } } catch (err) { let error = { data: [], message: 'Failed to verify JWT token', status: 500, statusCode: "UNKNOWN_ERROR" }; reject(error); return; } }); }; exports.extractTokenContent = extractTokenContent;