rewardwee_auth_access
Version:
auth verify access for all microservices
104 lines (103 loc) • 3.11 kB
JavaScript
;
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;